Skip to content

Commit 0ebbf59

Browse files
committed
models/user: attach EmailConfirmationStates via function call
1 parent 790ba5b commit 0ebbf59

File tree

5 files changed

+20
-25
lines changed

5 files changed

+20
-25
lines changed

server/config/passport.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ passport.use(
162162
if (!req.user.github) {
163163
req.user.github = profile.id;
164164
req.user.tokens.push({ kind: 'github', accessToken });
165-
req.user.verified = User.EmailConfirmation.Verified;
165+
req.user.verified = User.EmailConfirmation().Verified;
166166
}
167167
await req.user.save();
168168
return done(null, req.user);
@@ -193,7 +193,7 @@ passport.use(
193193
existingEmailUser.tokens.push({ kind: 'github', accessToken });
194194
existingEmailUser.name =
195195
existingEmailUser.name || profile.displayName;
196-
existingEmailUser.verified = User.EmailConfirmation.Verified;
196+
existingEmailUser.verified = User.EmailConfirmation().Verified;
197197

198198
await existingEmailUser.save();
199199
return done(null, existingEmailUser);
@@ -214,7 +214,7 @@ passport.use(
214214
user.username = profile.username;
215215
user.tokens.push({ kind: 'github', accessToken });
216216
user.name = profile.displayName;
217-
user.verified = User.EmailConfirmation.Verified;
217+
user.verified = User.EmailConfirmation().Verified;
218218
await user.save();
219219

220220
return done(null, user);
@@ -264,7 +264,7 @@ passport.use(
264264
if (!req.user.google) {
265265
req.user.google = profile._json.emails[0].value;
266266
req.user.tokens.push({ kind: 'google', accessToken });
267-
req.user.verified = User.EmailConfirmation.Verified;
267+
req.user.verified = User.EmailConfirmation().Verified;
268268
}
269269
await req.user.save();
270270
return done(null, req.user);
@@ -293,7 +293,7 @@ passport.use(
293293
});
294294
existingEmailUser.name =
295295
existingEmailUser.name || profile._json.displayName;
296-
existingEmailUser.verified = User.EmailConfirmation.Verified;
296+
existingEmailUser.verified = User.EmailConfirmation().Verified;
297297

298298
await existingEmailUser.save();
299299
return done(null, existingEmailUser);
@@ -305,7 +305,7 @@ passport.use(
305305
user.username = username;
306306
user.tokens.push({ kind: 'google', accessToken });
307307
user.name = profile._json.displayName;
308-
user.verified = User.EmailConfirmation.Verified;
308+
user.verified = User.EmailConfirmation().Verified;
309309

310310
await user.save();
311311
return done(null, user);

server/controllers/user.controller.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export async function createUser(req, res) {
5959
username,
6060
email: emailLowerCase,
6161
password,
62-
verified: User.EmailConfirmation.Sent,
62+
verified: User.EmailConfirmation().Sent,
6363
verifiedToken: token,
6464
verifiedTokenExpires: EMAIL_VERIFY_TOKEN_EXPIRY_TIME
6565
});
@@ -190,7 +190,7 @@ export async function emailVerificationInitiate(req, res) {
190190
res.status(404).json({ error: 'User not found' });
191191
return;
192192
}
193-
if (user.verified === User.EmailConfirmation.Verified) {
193+
if (user.verified === User.EmailConfirmation().Verified) {
194194
res.status(409).json({ error: 'Email already verified' });
195195
return;
196196
}
@@ -209,7 +209,7 @@ export async function emailVerificationInitiate(req, res) {
209209
return;
210210
}
211211
const EMAIL_VERIFY_TOKEN_EXPIRY_TIME = Date.now() + 3600000 * 24; // 24 hours
212-
user.verified = User.EmailConfirmation.Resent;
212+
user.verified = User.EmailConfirmation().Resent;
213213
user.verifiedToken = token;
214214
user.verifiedTokenExpires = EMAIL_VERIFY_TOKEN_EXPIRY_TIME; // 24 hours
215215
await user.save();
@@ -233,7 +233,7 @@ export async function verifyEmail(req, res) {
233233
});
234234
return;
235235
}
236-
user.verified = User.EmailConfirmation.Verified;
236+
user.verified = User.EmailConfirmation().Verified;
237237
user.verifiedToken = null;
238238
user.verifiedTokenExpires = null;
239239
await user.save();
@@ -315,7 +315,7 @@ export async function updateSettings(req, res) {
315315
await saveUser(res, user);
316316
} else if (user.email !== req.body.email) {
317317
const EMAIL_VERIFY_TOKEN_EXPIRY_TIME = Date.now() + 3600000 * 24; // 24 hours
318-
user.verified = User.EmailConfirmation.Sent;
318+
user.verified = User.EmailConfirmation().Sent;
319319

320320
user.email = req.body.email;
321321

server/models/user.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,6 @@ import {
88
} from '../types';
99
import { apiKeySchema } from './apiKey';
1010

11-
// const EmailConfirmationStates = {
12-
// Verified: 'verified',
13-
// Sent: 'sent',
14-
// Resent: 'resent'
15-
// };
16-
1711
const userSchema = new Schema<UserDocument, UserModel>(
1812
{
1913
name: { type: String, default: '' },
@@ -340,11 +334,11 @@ userSchema.statics.findByEmailAndUsername = async function findByEmailAndUsernam
340334
return foundUser;
341335
};
342336

343-
// userSchema.statics.EmailConfirmation = EmailConfirmationStates;
344-
345337
userSchema.index({ username: 1 }, { collation: { locale: 'en', strength: 2 } });
346338
userSchema.index({ email: 1 }, { collation: { locale: 'en', strength: 2 } });
347339

340+
userSchema.statics.EmailConfirmation = () => EmailConfirmationStates;
341+
348342
export const User =
349343
(mongoose.models.User as UserModel) ||
350344
mongoose.model<UserDocument, UserModel>('User', userSchema);

server/types/email.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
/** Possible email confirmation states */
2-
export enum EmailConfirmationStates {
3-
Verified = 'verified',
4-
Sent = 'sent',
5-
Resent = 'resent'
6-
}
2+
export const EmailConfirmationStates = {
3+
Verified: 'verified',
4+
Sent: 'sent',
5+
Resent: 'resent'
6+
} as const;
77

88
/** Rendered mail data for the mailer service, without the 'from' property, which will be automatically added */
99
export interface RenderedMailerData {

server/types/user.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,5 +71,6 @@ export interface UserModel extends Model<UserDocument> {
7171
email: string,
7272
username: string
7373
): Promise<UserDocument | null>;
74-
EmailConfirmation: typeof EmailConfirmationStates;
74+
75+
EmailConfirmation(): typeof EmailConfirmationStates;
7576
}

0 commit comments

Comments
 (0)