Posts

SECRET TOKEN.JS

  require ( "dotenv" ). config (); const jwt = require ( "jsonwebtoken" ); module . exports . createSecretToken = ( id ) => {   return jwt . sign ({ id }, process . env . TOKEN_KEY , {     expiresIn : 3 * 24 * 60 * 60 ,   }); };

MODELS

 USER MODEL const mongoose = require ( "mongoose" ); const Schema = mongoose . Schema ; const Model = mongoose . model ; const bcrypt = require ( "bcryptjs" ); const userSchema = new Schema ({   name : {     type : String ,     required : true ,   },   username : {     type : String ,     required : true ,     unique : true ,   },   email : {     type : String ,     required : true ,     unique : true ,   },   password : {     type : String ,     required : true ,   }, }); userSchema . pre ( "save" , async function ( next ) {   if ( this . isModified ( "password" )) {     this . password = await bcrypt . hash ( this . password , 10 );   }   next (); }); const User = new Model ( "User" , userSchema ); module . exports = User ; MEETING MODEL const mongoose = require ( "mongoose...

MIDDLEWARE.JS

  const User = require ( "../models/userModel" ); require ( "dotenv" ). config (); const jwt = require ( "jsonwebtoken" ); module . exports . userVerification = async ( req , res ) => {   console . log ( req . cookies );   const token = req . cookies . token ;   if ( ! token ) {     return res . status ( 404 ). json ({ message : "authentication failed!" });   }   jwt . verify ( token , process . env . TOKEN_KEY , async ( err , data ) => {     if ( err ) {       return res . status ( 400 ). json ({ message : "Invalid Token!" });     }     try {       console . log ( data );       const foundUser = await User . findById ( data . id );       if ( foundUser ) {         return res . status ( 200 ). json ({ message : "authentication successful!" });       } else {         r...

*********SOCKETCONTROLLER.JS*******

 SOCKETCONTROLLER.JS const { Server } = require ( "socket.io" ); const Meeting = require ( "../models/MeetingModel" ); let usernames = {}; let userRoles = {}; let messages = {}; let connections = {}; let timeOnline = {}; module . exports . SocketConnection = ( server ) => {   const io = new Server ( server , {     cors: {       origin: "*" ,       methods: [ "GET" , "POST" ],       allowedHeaders: [ "*" ],       credentials: true ,     },   });   io . on ( "connection" , ( socket ) => {     console . log ( socket . id );     socket . on ( "join-call" , async ({ room , username , isHost }) => {       if ( connections [ room ] === undefined ) {         connections [ room ] = [];       }       connections [ room ]. push ( socket . id );       ti...

BACKEND - ******USERCONTROLLER******

 UESRCONTROLLER.JS const User = require ( "../models/userModel" ); const Meeting = require ( "../models/MeetingModel" ); const { status } = require ( "http-status" ); const { createSecretToken } = require ( "../utils/secretToken" ); const bcrypt = require ( "bcryptjs" ); const jwt = require ( "jsonwebtoken" ); module . exports . signup = async ( req , res ) => {   const { name , username , password , email } = req . body ;   if ( ! name || ! username || ! password || ! email ) {     return res . json ({ message: "Fill all the  fields!" });   }   try {     const existingUser = await User . findOne ({ username , email });     if ( existingUser ) {       return res . json ({ message: "Username or email already exists!" });     }     const newUser = new User ({       name ,       username ,       passw...

AUTHENTICATION PAGE

 AUTH.JSX import React , { useState , useEffect } from "react" ; import axios from "axios" ; import Box from "@mui/material/Box" ; import IconButton from "@mui/material/IconButton" ; import Button from "@mui/material/Button" ; import ButtonGroup from "@mui/material/ButtonGroup" ; import InputAdornment from "@mui/material/InputAdornment" ; import TextField from "@mui/material/TextField" ; import Visibility from "@mui/icons-material/Visibility" ; import VisibilityOff from "@mui/icons-material/VisibilityOff" ; import MenuOutlinedIcon from "@mui/icons-material/MenuOutlined" ; import { useSnackbar } from "notistack" ; import Footer from "./Footer" ; import styles from "../styles/Auth.module.css" ; import { useNavigate } from "react-router-dom" ; import { Link } from "react-router-dom" ;...