mirror of
https://github.com/muerwre/orchidmap-front.git
synced 2025-04-25 11:06:40 +07:00
backend: auth checks
This commit is contained in:
parent
5025a43dbd
commit
c456f938b1
6 changed files with 59 additions and 29 deletions
|
@ -13,16 +13,3 @@ const database = mongoose.connection;
|
|||
database.on('error', (err) => { console.error(`Database Connection Error: ${err}`); process.exit(2); });
|
||||
database.on('connected', () => { console.info('Succesfully connected to MongoDB Database'); });
|
||||
|
||||
const Schema = mongoose.Schema;
|
||||
|
||||
// Schemas
|
||||
const User = new Schema({
|
||||
id: { type: String, required: true },
|
||||
role: { type: String, required: true },
|
||||
token: { type: String, required: true },
|
||||
});
|
||||
|
||||
|
||||
const UserModel = mongoose.model('User', User);
|
||||
|
||||
module.exports.UserModel = UserModel;
|
||||
|
|
12
backend/models/User.js
Normal file
12
backend/models/User.js
Normal file
|
@ -0,0 +1,12 @@
|
|||
const mongoose = require('mongoose');
|
||||
const { Schema } = mongoose;
|
||||
|
||||
// Schemas
|
||||
const UserSchema = new Schema({
|
||||
id: { type: String, required: true },
|
||||
role: { type: String, required: true },
|
||||
token: { type: String, required: true },
|
||||
});
|
||||
|
||||
const User = mongoose.model('User', UserSchema);
|
||||
module.exports.User = User;
|
|
@ -1,10 +1,12 @@
|
|||
const express = require('express');
|
||||
const createGuest = require('./auth/guest');
|
||||
const listUsers = require('./auth/list');
|
||||
const guest = require('./auth/guest');
|
||||
const list = require('./auth/list');
|
||||
const check = require('./auth/check');
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.get('/', listUsers);
|
||||
router.get('/guest', createGuest);
|
||||
router.get('/', check);
|
||||
router.get('/list', list);
|
||||
router.get('/guest', guest);
|
||||
|
||||
module.exports = router;
|
||||
|
|
16
backend/routes/auth/check.js
Normal file
16
backend/routes/auth/check.js
Normal file
|
@ -0,0 +1,16 @@
|
|||
const { User } = require('../../models/User');
|
||||
const { generateGuest, generateRandomUrl } = require('./guest');
|
||||
|
||||
module.exports = async (req, res) => {
|
||||
const { id, token } = req.query;
|
||||
const user = await User.find({ id, token });
|
||||
const random_url = await generateRandomUrl();
|
||||
|
||||
if (user.length > 0) {
|
||||
return res.send({ success: true, ...user[0].toObject() });
|
||||
}
|
||||
|
||||
const guest = await generateGuest();
|
||||
return res.send({ success: false, ...guest, random_url });
|
||||
};
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
const { genRandomSequence } = require('../../utils/gen');
|
||||
const { UserModel } = require('../../config/db');
|
||||
const { User } = require('../../models/User');
|
||||
|
||||
const generateGuestToken = () => {
|
||||
const id = `guest:${genRandomSequence(32)}`;
|
||||
const id = `guest:${genRandomSequence(16)}`;
|
||||
|
||||
return UserModel.find({ id }).then(user => {
|
||||
return User.find({ id }).then(user => {
|
||||
if (user.length) return generateGuestToken();
|
||||
|
||||
return id;
|
||||
|
@ -19,14 +19,27 @@ const generateUser = id => {
|
|||
};
|
||||
|
||||
const saveUser = user => {
|
||||
const model = new UserModel({ ...user });
|
||||
const model = new User({ ...user });
|
||||
|
||||
return model.save();
|
||||
};
|
||||
|
||||
module.exports = (req, res) => (
|
||||
generateGuestToken()
|
||||
.then(generateUser)
|
||||
.then(saveUser)
|
||||
.then(result => res.send({ success: 'true', type: 'guest', token: result }))
|
||||
);
|
||||
const generateRandomUrl = () => Promise.resolve(genRandomSequence(16));
|
||||
|
||||
const generateGuest = async () => {
|
||||
const user = await generateGuestToken()
|
||||
.then(generateUser);
|
||||
const random_url = await generateRandomUrl();
|
||||
|
||||
return { ...user, random_url };
|
||||
};
|
||||
|
||||
module.exports = async (req, res) => {
|
||||
const user = await generateGuest();
|
||||
await saveUser(user);
|
||||
|
||||
res.send({ success: 'true', ...user });
|
||||
};
|
||||
|
||||
module.exports.generateGuest = generateGuest;
|
||||
module.exports.generateRandomUrl = generateRandomUrl;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
const { UserModel } = require('../../config/db');
|
||||
const { User } = require('../../models/User');
|
||||
|
||||
module.exports = (req, res) => UserModel.find((err, articles) => {
|
||||
module.exports = (req, res) => User.find((err, articles) => {
|
||||
if (!err) return res.send(articles);
|
||||
|
||||
res.statusCode = 500;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue