fix: check for admin users when removing user as admin (HBE-180) (#52)

* fix: check if admin users are there in infra when removing user as an admin

* fix: corrected the logic for length check

* chore: update error message

* chore: add new error message
This commit is contained in:
Ankit Sridhar
2023-03-24 15:21:23 +05:30
committed by GitHub
parent 5164315243
commit b16e90c10d
2 changed files with 11 additions and 0 deletions

View File

@@ -9,6 +9,7 @@ import {
DUPLICATE_EMAIL,
EMAIL_FAILED,
INVALID_EMAIL,
ONLY_ONE_ADMIN_ACCOUNT,
TEAM_INVITE_ALREADY_MEMBER,
USER_ALREADY_INVITED,
USER_IS_ADMIN,
@@ -348,6 +349,9 @@ export class AdminService {
* @returns an Either of boolean or error
*/
async removeUserAsAdmin(userUID: string) {
const adminUsers = await this.userService.fetchAdminUsers();
if (adminUsers.length === 1) return E.left(ONLY_ONE_ADMIN_ACCOUNT);
const admin = await this.userService.removeUserAsAdmin(userUID);
if (E.isLeft(admin)) return E.left(admin.left);
return E.right(true);

View File

@@ -3,6 +3,13 @@ export const INVALID_EMAIL = 'invalid/email' as const;
export const EMAIL_FAILED = 'email/failed' as const;
export const DUPLICATE_EMAIL = 'email/both_emails_cannot_be_same' as const;
/**
* Only one admin account found in infra
* (AdminService)
*/
export const ONLY_ONE_ADMIN_ACCOUNT =
'admin/only_one_admin_account_found' as const;
/**
* Token Authorization failed (Check 'Authorization' Header)
* (GqlAuthGuard)