Skip to content

Commit dd9f47e

Browse files
Added verification email feature flag
1 parent cf4b43a commit dd9f47e

4 files changed

Lines changed: 47 additions & 4 deletions

File tree

src/controllers/messages/sendMessageEmail.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export async function sendMessageEmail(user: User, message: string): Promise<any
2525
"content": [
2626
{
2727
"type": "text/plain",
28-
"value": `${message}\n\nThis was sent from ${user.firstname} ${user.lastname} from ${user.email}.`,
28+
"value": `${message}\n\nThis was sent by ${user.firstname} ${user.lastname} from ${user.email}.`,
2929
}
3030
]
3131
})

src/models/FeatureFlags.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ export type VersionDeviceFeatureFlags = {
44

55
export type VersionFeatureFlags = {
66
status: "SUPPORTED" | "UNSUPPORTED" | "DEPRECATED";
7+
8+
disableUserEmailVerification?: boolean;
79

810
platforms?: {
911
[key: string]: VersionDeviceFeatureFlags;

src/routes/auth/login.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import { createUserVerification } from "../../controllers/users/verifications/cr
22
import { getUserByEmail } from "../../controllers/users/getUserByEmail";
33
import { sendUserVerificationEmail } from "../../controllers/users/verifications/sendUserVerificationEmail";
44
import { verifyPassword } from "../../utils/encryption";
5+
import { VersionFeatureFlags } from "../../models/FeatureFlags";
6+
import { createToken } from "../../controllers/tokens/createToken";
57

68
export const authLoginSchema = {
79
content: {
@@ -17,7 +19,7 @@ export const authLoginSchema = {
1719
}
1820
};
1921

20-
export async function handleAuthLoginRequest(request: RequestWithKey, env: Env) {
22+
export async function handleAuthLoginRequest(request: RequestWithKey, env: Env, context: EventContext<Env, string, null>, featureFlags: VersionFeatureFlags) {
2123
const { email, password } = request.content;
2224

2325
const user = await getUserByEmail(env.DATABASE, email);
@@ -28,6 +30,23 @@ export async function handleAuthLoginRequest(request: RequestWithKey, env: Env)
2830
if(!(await verifyPassword(password, user.password)))
2931
return Response.json({ success: false, message: "Your credentials do not match." });
3032

33+
if(featureFlags.disableUserEmailVerification) {
34+
const keyArray = new Uint8Array(64);
35+
crypto.getRandomValues(keyArray);
36+
const key = Array.from(keyArray, (decimal) => decimal.toString(16).padStart(2, '0')).join('');
37+
const token = await createToken(env.DATABASE, btoa(key), user.id);
38+
39+
if(token === null)
40+
return Response.json({ success: false, message: "Something went wrong." });
41+
42+
return Response.json({
43+
success: true,
44+
token: {
45+
key: token.key
46+
}
47+
});
48+
}
49+
3150
const userVerification = await createUserVerification(env.DATABASE, user);
3251

3352
if(userVerification === null)

src/routes/auth/register.ts

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
import { createToken } from "../../controllers/tokens/createToken";
12
import { createUser } from "../../controllers/users/createUser";
23
import { getUserByEmail } from "../../controllers/users/getUserByEmail";
34
import { createUserVerification } from "../../controllers/users/verifications/createUserVerification";
45
import { sendUserVerificationEmail } from "../../controllers/users/verifications/sendUserVerificationEmail";
6+
import { VersionFeatureFlags } from "../../models/FeatureFlags";
57
import { encryptPassword } from "../../utils/encryption";
68

79
export const authRegisterSchema = {
@@ -28,7 +30,7 @@ export const authRegisterSchema = {
2830
}
2931
};
3032

31-
export async function handleAuthRegisterRequest(request: RequestWithKey, env: Env) {
33+
export async function handleAuthRegisterRequest(request: RequestWithKey, env: Env, context: EventContext<Env, string, null>, featureFlags: VersionFeatureFlags) {
3234
const { firstname, lastname, email, password } = request.content;
3335

3436
if(firstname.length < 2 || firstname.length > 128)
@@ -51,6 +53,23 @@ export async function handleAuthRegisterRequest(request: RequestWithKey, env: En
5153
if(user === null)
5254
return Response.json({ success: false, message: "Something went wrong!" });
5355

56+
if(featureFlags.disableUserEmailVerification) {
57+
const keyArray = new Uint8Array(64);
58+
crypto.getRandomValues(keyArray);
59+
const key = Array.from(keyArray, (decimal) => decimal.toString(16).padStart(2, '0')).join('');
60+
const token = await createToken(env.DATABASE, btoa(key), user.id);
61+
62+
if(token === null)
63+
return Response.json({ success: false, message: "Something went wrong." });
64+
65+
return Response.json({
66+
success: true,
67+
token: {
68+
key: token.key
69+
}
70+
});
71+
}
72+
5473
const userVerification = await createUserVerification(env.DATABASE, user);
5574

5675
if(userVerification === null)
@@ -59,5 +78,8 @@ export async function handleAuthRegisterRequest(request: RequestWithKey, env: En
5978
if(!user.email.endsWith("ridetracker.app"))
6079
await sendUserVerificationEmail(user, userVerification);
6180

62-
return Response.json({ success: true, verification: userVerification.id });
81+
return Response.json({
82+
success: true,
83+
verification: userVerification.id
84+
});
6385
};

0 commit comments

Comments
 (0)