All files / utils/common user.ts

100% Statements 21/21
100% Branches 11/11
100% Functions 1/1
100% Lines 21/21

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 291x         1x 47x 47x 47x 47x 47x 47x 47x 47x 47x 30x 30x     17x 17x 17x 17x 18x 47x   47x 47x  
import {
  FrontendUserObject, validDepartments
} from '@/types/api/users';
import { UserPermissions } from '@/types/backend/user';
 
export function getUserPermissions(user: FrontendUserObject | null): UserPermissions {
  const userPerms: UserPermissions = {
    isUser: false,
    isAdmin: false,
    isDistrictAdmin: false,
    canEditNames: false,
    activeDepartments: [],
    adminDepartments: [],
  };
  if (user === null) {
    return userPerms;
  }
 
  // Determine the permissions
  userPerms.activeDepartments = validDepartments.filter(dep => user[dep]?.active);
  userPerms.adminDepartments = userPerms.activeDepartments.filter(dep => user[dep]?.admin);
  userPerms.isUser = userPerms.activeDepartments.length > 0;
  userPerms.isAdmin = userPerms.adminDepartments.length > 0;
  userPerms.isDistrictAdmin = userPerms.isUser && !!user.isDistrictAdmin;
  userPerms.canEditNames = userPerms.isDistrictAdmin || user.canEditNames || false;
 
  return userPerms;
}