mirror of
https://github.com/muerwre/orchidmap-front.git
synced 2025-04-25 02:56:41 +07:00
52 lines
1.3 KiB
JavaScript
52 lines
1.3 KiB
JavaScript
const { genRandomSequence } = require('../../utils/gen');
|
|
const { User } = require('../../models');
|
|
|
|
const generateGuestToken = () => {
|
|
const _id = `guest:${genRandomSequence(16)}`;
|
|
|
|
return User.find({ _id }).then(user => {
|
|
if (user.length) return generateGuestToken();
|
|
|
|
return _id;
|
|
});
|
|
};
|
|
|
|
const generateUser = (_id, role = 'guest') => {
|
|
const token = `seq:${genRandomSequence(32)}`;
|
|
|
|
return { _id, token, role };
|
|
};
|
|
|
|
const saveUser = user => {
|
|
const model = new User({ ...user });
|
|
|
|
return model.save()
|
|
.then(() => model.toObject())
|
|
.catch(() => ({
|
|
...user,
|
|
success: false,
|
|
error: 'Error saving user model',
|
|
error_code: 1232,
|
|
}));
|
|
};
|
|
|
|
const generateRandomUrl = () => Promise.resolve(genRandomSequence(16));
|
|
|
|
const generateGuest = async () => {
|
|
const user = await generateGuestToken()
|
|
.then(generateUser);
|
|
const random_url = await generateRandomUrl();
|
|
|
|
return { ...user, random_url, first_name: '', last_name: '', photo: '' };
|
|
};
|
|
|
|
module.exports = async (req, res) => {
|
|
const user = await generateGuest().then(saveUser);
|
|
|
|
res.send({ success: true, ...user });
|
|
};
|
|
|
|
module.exports.generateUser = generateUser;
|
|
module.exports.generateGuest = generateGuest;
|
|
module.exports.generateGuestToken = generateGuestToken;
|
|
module.exports.generateRandomUrl = generateRandomUrl;
|