Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change and fix register #8

Merged
merged 3 commits into from
May 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions src/.env

This file was deleted.

1 change: 1 addition & 0 deletions src/Router/authAuction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ const bcrypt = require("bcryptjs")
const Emailsend = require("../email")
const HistoryBid=require('../model/HistoryBid')
const emailSender = new Emailsend()

const generateAccessToken = require("../middleware/generateAccessToken")
const PasswordSendDelete = require("../passwordSendDelete")
// const fs = require("fs")
Expand Down
128 changes: 48 additions & 80 deletions src/Router/authLogin.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,23 @@
import {uploadFile} from "../s3"

const bcrypt = require("bcryptjs")
const {validationResult} = require("express-validator")
const User = require("../model/user")
const Preregister = require("../model/PreRegister")
const tempData = require("../cache")
const {Request, Response, NextFunction} = require("express")
const {secret} = require("../config")
const {secret,secretTime} = require("../config")
const timeUser = require("../middleware/timeUser")
const jwt = require("jsonwebtoken")
// const forgotdata = require('../email');
const Emailsend = require("../email")
const {json} = require("express")
const verifyToken = require("../middleware/verify")
const emailSender = new Emailsend()

const {Storage} = require("@google-cloud/storage")
const projectId = "commanding-ring-409619" // Get this from Google Cloud
const keyFilename = "mykey.json"
const generateToken = require("../middleware/generateAccessToken")
const generateAccessToken = (id) => {
const playold = {
id,
Expand Down Expand Up @@ -71,21 +74,23 @@ class authController {
}
const hashPassword = await bcrypt.hash(password, 7)
const chaecknum = Math.floor(Math.random() * 8999) + 1000
console.log(chaecknum)
const status = true
tempData.setTempData(
"registrationData",
{
name,
email,
chaecknum,
hashPassword,
status,
},
30 * 60 * 1000
)

return res.status(200).json({message: "regis good"})
const preregister = new Preregister({
name: name,
email: email,
code: chaecknum,
password: hashPassword,
status: status,
})
preregister.save()
const token = generateToken({
id: preregister._id,
secret:secretTime,
time: "5min",
})

return res.status(200).json({token: token})
} catch (e) {
console.error(e)
res.status(400).json({message: "Registration error"})
Expand Down Expand Up @@ -133,57 +138,35 @@ class authController {
num: chaecknum.toString(),
})

tempData.setTempData(
"registrationData",
{
name,
email,
chaecknum,
hashPassword: savedData.hashPassword,
status,
},
30 * 60 * 1000
)

} catch (e) {
console.log(e)
res.status(400).json({message: "Registration error"})
}
}
async SendEmail(req, res) {
async SendEmail(req, res,next ) {
try {
const savedData = tempData.getTempData("registrationData")

if (!savedData) {
return res
.status(400)
.json({message: "Registration data not found"})
}
const {name, email, chaecknum} = savedData
const {preRegister,id} = req

// if (!token) {
// return res
// .status(400)
// .json({message: "Registration data not found"})
// }

let status = savedData.status
if (status) {


if (preRegister.status) {
await emailSender.sendmessage({
emailUser: email,
num: chaecknum.toString(),
emailUser: preRegister.email,
num: preRegister.code.toString(),
})

status = false
tempData.setTempData(
"registrationData",
{
name,
email,
chaecknum,
hashPassword: savedData.hashPassword,
status,
},
30 * 60 * 1000
)

return res
.status(200)
.json({message: "Email sent successfully"})
preRegister.status = false
preRegister.save()
}

return res.status(200).json({message: "Email sent successfully"})
} catch (e) {
console.error("There was an error sending the email:", e)
return res.status(400).json({message: "Email sending error"})
Expand Down Expand Up @@ -223,23 +206,18 @@ class authController {
// }
async registerCreate(req, res) {
try {
const savedData = tempData.getTempData("registrationData")
const {code} = req.body

if (!savedData) {
return res
.status(400)
.json({message: "Registration data not found"})
}

const {code, } = req.body

const {preRegister}=req

const {name, email, chaecknum, hashPassword, status} = savedData
console.log(name)
if (chaecknum == code) {

if (preRegister.code == code) {
const user = new User({
avatar: "",
name: name,
email: email,
password: hashPassword,
name: preRegister.name,
email: preRegister.email,
password: preRegister.password,
balance: 100,
bidAuction: [],
ownAuction: [],
Expand All @@ -249,17 +227,7 @@ class authController {
message: "regist successfull",
})
}
tempData.setTempData(
"registrationData",
{
email,
chaecknum,
hashPassword,
status,
},
30 * 60 * 1000
)
return res.status(400).json({message: "Invalid code"})
return res.status(400).json({message: "Invalid code"})
} catch (error) {
console.error("Error during registration:", error)
return res.status(500).json({message: "Registration error"})
Expand Down
5 changes: 3 additions & 2 deletions src/authRouter.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ const { Storage } = require("@google-cloud/storage");
const Multer = require("multer");
const verifyToken = require("./middleware/verify")
const Auction = require("./model/Auction")
const verifyTimerToken=require('./middleware/timeUser')
// const projectId = "commanding-ring-409619" // Get this from Google Cloud
// const keyFilename = "mykey.json"
// const multer = require('multer')
Expand All @@ -26,8 +27,8 @@ router.post('/getuser',middlewareUser,controllerLogin.getUser)
router.post('/login', controllerLogin.login)
router.post('/registration',controllerLogin.registration)
router.post('/resendemail',controllerLogin.resendemail)
router.post('/registercreate',controllerLogin.registerCreate)
router.get('/sendemail',controllerLogin.SendEmail)
router.post('/registercreate',verifyTimerToken,controllerLogin.registerCreate)
router.get('/sendemail',verifyTimerToken,controllerLogin.SendEmail)
router.post('/editprofileimage',type,controllerLogin.editprofileimage)
router.post('/validatetoken',controllerLogin.validateToken)
router.post('/recoverypassword',controllerLogin.changeSendTokenPassword)
Expand Down
3 changes: 2 additions & 1 deletion src/config.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
module.exports={
secret:'SECRET_KEY_RANDOM'
secret:'SECRET_KEY_RANDOM',
secretTime:'SECRET_KEY_REG'
}
4 changes: 3 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
const dotenv = require('dotenv');
dotenv.config();
const express = require("express")
const mongoose = require("mongoose")
const path = require("path")
const app = express()
const cors = require("cors")
const PORT = 9000
const PORT = 8000
const authRouter = require("./authRouter")
app.use(express.json())
const multer = require("multer")
Expand Down
24 changes: 16 additions & 8 deletions src/middleware/generateAccessToken.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
const jwt = require("jsonwebtoken")
const {secret} = require("../config")
const generateAccessToken = (id:string) => {
const playold = {
id,
}
return jwt.sign(playold, secret, {expiresIn: "24h"})
const jwt = require("jsonwebtoken");

interface IgenerateAccessToken {
id: string;
secret: string;
time: string;
}
exports.module=generateAccessToken

const generateAccessToken = ({ id, secret, time }: IgenerateAccessToken) => {
const payload = {
id,
};
console.log(id)
return jwt.sign(payload, secret, { expiresIn: time });
}

module.exports = generateAccessToken;
52 changes: 52 additions & 0 deletions src/middleware/timeUser.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import jwt, {JwtPayload} from "jsonwebtoken"
import {Response} from "express"
const PreRegister = require("../model/PreRegister")
const {secretTime} = require("../config")

// interface IBody {
// query: {
// token?: string
// }
// preRegister?: any
// id?: string
// }
// interface IVerifyToken {
// req: IBody
// res: Response

// next: any
// }
module.exports = async function (req, res, next) {
try {
console.log(req.query)
let token = req.query.token
console.log(token)
if (!token) {
return res.send({message: "Пользователь не авторизован"})
}

const decodedData = await jwt.verify(token, secretTime)
if (!decodedData) {
res.status(400).send({
error: "Order id is invalid",
})
return
}
console.log("ddd")
const id = decodedData.id

const preRegister = await PreRegister.findById(id.trim())
if (!preRegister) {
return res.status(400).json({
message: "The user with this name does not exist",
})
}
req.preRegister = preRegister
req.id = id
next()
} catch (error) {
return res.status(401).json({
message: "Invalid token",
})
}
}
16 changes: 16 additions & 0 deletions src/model/PreRegister.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
const {model, Schema} = require("mongoose")
const PreRegister= new Schema({
avatar:{type: String},
name: {type: String},
email: {type: String, uniqne: true, required: true},
password: {type: String, required: true},
balance:{type:Number},
code:{type:Number},
status:{type:Boolean},
bidAuction:{type:[]},
ownAuction:{type:[]},
token: {type: String},
}, { timestamps: true })
PreRegister.index( { "createdAt": 1 }, { expireAfterSeconds: 420 } );
module.exports = model("PreRegister", PreRegister)