| | const mongoose = require('mongoose'); |
| | const { getRandomValues } = require('@librechat/api'); |
| | const { logger, hashToken } = require('@librechat/data-schemas'); |
| | const { createToken, findToken } = require('~/models'); |
| |
|
| | |
| | |
| | |
| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | const createInvite = async (email) => { |
| | try { |
| | const token = await getRandomValues(32); |
| | const hash = await hashToken(token); |
| | const encodedToken = encodeURIComponent(token); |
| |
|
| | const fakeUserId = new mongoose.Types.ObjectId(); |
| |
|
| | await createToken({ |
| | userId: fakeUserId, |
| | email, |
| | token: hash, |
| | createdAt: Date.now(), |
| | expiresIn: 604800, |
| | }); |
| |
|
| | return encodedToken; |
| | } catch (error) { |
| | logger.error('[createInvite] Error creating invite', error); |
| | return { message: 'Error creating invite' }; |
| | } |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | const getInvite = async (encodedToken, email) => { |
| | try { |
| | const token = decodeURIComponent(encodedToken); |
| | const hash = await hashToken(token); |
| | const invite = await findToken({ token: hash, email }); |
| |
|
| | if (!invite) { |
| | throw new Error('Invite not found or email does not match'); |
| | } |
| |
|
| | return invite; |
| | } catch (error) { |
| | logger.error('[getInvite] Error getting invite:', error); |
| | return { error: true, message: error.message }; |
| | } |
| | }; |
| |
|
| | module.exports = { |
| | createInvite, |
| | getInvite, |
| | }; |
| |
|