| 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, |
| }; |
|
|