backend: auth checks

This commit is contained in:
muerwre 2018-11-29 16:56:01 +07:00
parent 5025a43dbd
commit c456f938b1
6 changed files with 59 additions and 29 deletions

View file

@ -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
View 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;

View file

@ -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;

View 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 });
};

View file

@ -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;

View file

@ -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;