mirror of
https://github.com/muerwre/orchidmap-front.git
synced 2025-04-26 03:26:41 +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('error', (err) => { console.error(`Database Connection Error: ${err}`); process.exit(2); });
|
||||||
database.on('connected', () => { console.info('Succesfully connected to MongoDB Database'); });
|
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 express = require('express');
|
||||||
const createGuest = require('./auth/guest');
|
const guest = require('./auth/guest');
|
||||||
const listUsers = require('./auth/list');
|
const list = require('./auth/list');
|
||||||
|
const check = require('./auth/check');
|
||||||
|
|
||||||
const router = express.Router();
|
const router = express.Router();
|
||||||
|
|
||||||
router.get('/', listUsers);
|
router.get('/', check);
|
||||||
router.get('/guest', createGuest);
|
router.get('/list', list);
|
||||||
|
router.get('/guest', guest);
|
||||||
|
|
||||||
module.exports = router;
|
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 { genRandomSequence } = require('../../utils/gen');
|
||||||
const { UserModel } = require('../../config/db');
|
const { User } = require('../../models/User');
|
||||||
|
|
||||||
const generateGuestToken = () => {
|
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();
|
if (user.length) return generateGuestToken();
|
||||||
|
|
||||||
return id;
|
return id;
|
||||||
|
@ -19,14 +19,27 @@ const generateUser = id => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const saveUser = user => {
|
const saveUser = user => {
|
||||||
const model = new UserModel({ ...user });
|
const model = new User({ ...user });
|
||||||
|
|
||||||
return model.save();
|
return model.save();
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = (req, res) => (
|
const generateRandomUrl = () => Promise.resolve(genRandomSequence(16));
|
||||||
generateGuestToken()
|
|
||||||
.then(generateUser)
|
const generateGuest = async () => {
|
||||||
.then(saveUser)
|
const user = await generateGuestToken()
|
||||||
.then(result => res.send({ success: 'true', type: 'guest', token: result }))
|
.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);
|
if (!err) return res.send(articles);
|
||||||
|
|
||||||
res.statusCode = 500;
|
res.statusCode = 500;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue