Skip to content

Commit 3978d94

Browse files
authored
chore: improve create user firebase error logging (#476)
1 parent 01a90b3 commit 3978d94

File tree

4 files changed

+25
-19
lines changed

4 files changed

+25
-19
lines changed

src/auth/auth.service.ts

+5-10
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,7 @@ import {
77
} from '@nestjs/common';
88
import { DecodedIdToken } from 'firebase-admin/lib/auth/token-verifier';
99
import { Logger } from 'src/logger/logger';
10-
import {
11-
CREATE_USER_ALREADY_EXISTS,
12-
CREATE_USER_FIREBASE_ERROR,
13-
CREATE_USER_INVALID_EMAIL,
14-
CREATE_USER_WEAK_PASSWORD,
15-
} from 'src/utils/errors';
10+
import { FIREBASE_ERRORS } from 'src/utils/errors';
1611
import { FIREBASE } from '../firebase/firebase-factory';
1712
import { FirebaseServices } from '../firebase/firebase.types';
1813
import { UserAuthDto } from './dto/user-auth.dto';
@@ -61,19 +56,19 @@ export class AuthService {
6156
this.logger.warn(
6257
`Create user: user tried to create email with invalid email: ${email} - ${err}`,
6358
);
64-
throw new HttpException(CREATE_USER_INVALID_EMAIL, HttpStatus.BAD_REQUEST);
59+
throw new HttpException(FIREBASE_ERRORS.CREATE_USER_INVALID_EMAIL, HttpStatus.BAD_REQUEST);
6560
} else if (errorCode === 'auth/weak-password' || errorCode === 'auth/invalid-password') {
6661
this.logger.warn(`Create user: user tried to create email with weak password - ${err}`);
67-
throw new HttpException(CREATE_USER_WEAK_PASSWORD, HttpStatus.BAD_REQUEST);
62+
throw new HttpException(FIREBASE_ERRORS.CREATE_USER_WEAK_PASSWORD, HttpStatus.BAD_REQUEST);
6863
} else if (
6964
errorCode === 'auth/email-already-in-use' ||
7065
errorCode === 'auth/email-already-exists'
7166
) {
7267
this.logger.warn(`Create user: Firebase user already exists: ${email}`);
73-
throw new HttpException(CREATE_USER_ALREADY_EXISTS, HttpStatus.BAD_REQUEST);
68+
throw new HttpException(FIREBASE_ERRORS.CREATE_USER_ALREADY_EXISTS, HttpStatus.BAD_REQUEST);
7469
} else {
7570
this.logger.error(`Create user: Error creating firebase user - ${email}: ${err}`);
76-
throw new HttpException(CREATE_USER_FIREBASE_ERROR, HttpStatus.BAD_REQUEST);
71+
throw new HttpException(FIREBASE_ERRORS.CREATE_USER_FIREBASE_ERROR, HttpStatus.BAD_REQUEST);
7772
}
7873
}
7974
}

src/logger/logger.ts

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { ConsoleLogger } from '@nestjs/common';
22
import Rollbar from 'rollbar';
3+
import { FIREBASE_ERRORS } from 'src/utils/errors';
34
import { isProduction, rollbarEnv, rollbarToken } from '../utils/constants';
45

56
export class Logger extends ConsoleLogger {
@@ -36,6 +37,7 @@ export class Logger extends ConsoleLogger {
3637
accessToken: rollbarToken,
3738
captureUncaught: true,
3839
captureUnhandledRejections: true,
40+
ignoredMessages: [...Object.values(FIREBASE_ERRORS)],
3941
});
4042
}
4143
}

src/user/user.service.ts

+9-5
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@ import { Logger } from 'src/logger/logger';
99
import { SubscriptionUserService } from 'src/subscription-user/subscription-user.service';
1010
import { TherapySessionService } from 'src/therapy-session/therapy-session.service';
1111
import { SIGNUP_TYPE } from 'src/utils/constants';
12+
import { FIREBASE_ERRORS } from 'src/utils/errors';
1213
import {
1314
createServiceUserProfiles,
1415
updateServiceUserProfilesUser,
1516
} from 'src/utils/serviceUserProfiles';
16-
import { And, ILike, Raw, Repository, IsNull, Not } from 'typeorm';
17+
import { And, ILike, IsNull, Not, Raw, Repository } from 'typeorm';
1718
import { deleteCypressCrispProfiles } from '../api/crisp/crisp-api';
1819
import { AuthService } from '../auth/auth.service';
1920
import { PartnerAccessService, basePartnerAccess } from '../partner-access/partner-access.service';
@@ -98,7 +99,9 @@ export class UserService {
9899
});
99100
return userDto;
100101
} catch (error) {
101-
this.logger.error(`Create user: Error creating user ${email}: ${error}`);
102+
if (!Object.values(FIREBASE_ERRORS).includes(error)) {
103+
this.logger.error(`Create user: Error creating user ${email}: ${error}`);
104+
}
102105
throw error;
103106
}
104107
}
@@ -291,9 +294,10 @@ export class UserService {
291294
...(filters.partnerAdmin && {
292295
partnerAdmin: {
293296
...(filters.partnerAdmin && {
294-
id: filters.partnerAdmin.partnerAdminId === 'IS NOT NULL'
295-
? Not(IsNull())
296-
: filters.partnerAdmin.partnerAdminId
297+
id:
298+
filters.partnerAdmin.partnerAdminId === 'IS NOT NULL'
299+
? Not(IsNull())
300+
: filters.partnerAdmin.partnerAdminId,
297301
}),
298302
},
299303
}),

src/utils/errors.ts

+9-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
export const CREATE_USER_FIREBASE_ERROR = 'CREATE_USER_FIREBASE_ERROR';
2-
export const CREATE_USER_INVALID_EMAIL = 'CREATE_USER_INVALID_EMAIL';
3-
export const CREATE_USER_WEAK_PASSWORD = 'CREATE_USER_WEAK_PASSWORD';
4-
export const CREATE_USER_ALREADY_EXISTS = 'CREATE_USER_ALREADY_EXISTS';
1+
// Includes known/expected firebase errors from user inputs
2+
// These errors are returned to the user and display appropriate error messages
3+
// However these errors are ignored from rollbar and error logging
4+
export enum FIREBASE_ERRORS {
5+
CREATE_USER_FIREBASE_ERROR = 'CREATE_USER_FIREBASE_ERROR',
6+
CREATE_USER_INVALID_EMAIL = 'CREATE_USER_INVALID_EMAIL',
7+
CREATE_USER_WEAK_PASSWORD = 'CREATE_USER_WEAK_PASSWORD',
8+
CREATE_USER_ALREADY_EXISTS = 'CREATE_USER_ALREADY_EXISTS',
9+
}

0 commit comments

Comments
 (0)