mirror of
https://github.com/bluewave-labs/Checkmate.git
synced 2025-12-30 22:29:37 -06:00
57 lines
1.3 KiB
JavaScript
Executable File
57 lines
1.3 KiB
JavaScript
Executable File
const SERVICE_NAME = "inviteModule";
|
|
|
|
class InviteModule {
|
|
constructor({ InviteToken, crypto, stringService }) {
|
|
this.InviteToken = InviteToken;
|
|
this.crypto = crypto;
|
|
this.stringService = stringService;
|
|
}
|
|
|
|
requestInviteToken = async (userData) => {
|
|
try {
|
|
await this.InviteToken.deleteMany({ email: userData.email });
|
|
userData.token = this.crypto.randomBytes(32).toString("hex");
|
|
let inviteToken = new this.InviteToken(userData);
|
|
await inviteToken.save();
|
|
return inviteToken;
|
|
} catch (error) {
|
|
error.service = SERVICE_NAME;
|
|
error.method = "requestInviteToken";
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
getInviteToken = async (token) => {
|
|
try {
|
|
const invite = await this.InviteToken.findOne({
|
|
token,
|
|
});
|
|
if (invite === null) {
|
|
throw new Error(this.stringService.authInviteNotFound);
|
|
}
|
|
return invite;
|
|
} catch (error) {
|
|
error.service = SERVICE_NAME;
|
|
error.method = "getInviteToken";
|
|
throw error;
|
|
}
|
|
};
|
|
getInviteTokenAndDelete = async (token) => {
|
|
try {
|
|
const invite = await this.InviteToken.findOneAndDelete({
|
|
token,
|
|
});
|
|
if (invite === null) {
|
|
throw new Error(this.stringService.authInviteNotFound);
|
|
}
|
|
return invite;
|
|
} catch (error) {
|
|
error.service = SERVICE_NAME;
|
|
error.method = "getInviteTokenAndDelete";
|
|
throw error;
|
|
}
|
|
};
|
|
}
|
|
|
|
export default InviteModule;
|