Skip to content

Commit 3b3b83b

Browse files
author
Rodrigo Barraza
authored
25912 - Sync membership handling (#3263)
1 parent 144612c commit 3b3b83b

File tree

3 files changed

+37
-42
lines changed

3 files changed

+37
-42
lines changed

auth-web/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

auth-web/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "auth-web",
3-
"version": "2.8.7",
3+
"version": "2.8.8",
44
"appName": "Auth Web",
55
"sbcName": "SBC Common Components",
66
"private": true,

auth-web/src/stores/org.ts

Lines changed: 34 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -315,52 +315,47 @@ export const useOrgStore = defineStore('org', () => {
315315
return response
316316
}
317317

318-
async function syncMembership (orgId: number): Promise<Member> {
319-
let permissions:string[] = []
320-
let response
321-
let membership:Member = null
322-
const kcUserProfile = KeyCloakService.getUserInfo()
323-
if (!kcUserProfile.roles.includes(Role.Staff) && !kcUserProfile.roles.includes(Role.ContactCentreStaff)) {
324-
response = await UserService.getMembership(orgId)
325-
membership = response?.data
326-
// const org: Organization = state.currentOrganization']
327-
const currentAccountSettings = state.currentAccountSettings
328-
// const statusCode = org && org.statusCode ? org?.statusCode : currentAccountSettings.accountStatus
329-
const statusCode = currentAccountSettings.accountStatus
330-
// to fix permission issue. take status from currentAccountSettings
331-
const res = await PermissionService.getPermissions(statusCode, membership?.membershipTypeCode)
332-
permissions = res?.data
333-
} else {
334-
// Check for better approach
335-
// Create permissions to enable actions for staff
336-
if (kcUserProfile.roles.includes(Role.ContactCentreStaff)) {
337-
permissions = CommonUtils.getContactCentreStaffPermissions()
338-
} else if (kcUserProfile.roles.includes(Role.StaffManageAccounts)) {
339-
permissions = CommonUtils.getAdminPermissions()
340-
} else if (kcUserProfile.roles.includes(Role.StaffViewAccounts)) {
341-
permissions = CommonUtils.getViewOnlyPermissions()
342-
}
343-
// Create an empty membership model for staff. Map view_account as User and manage_accounts as Admin
344-
let membershipTypeCode = null
345-
if (kcUserProfile.roles.includes(Role.ContactCentreStaff)) {
346-
membershipTypeCode = MembershipType.Admin
347-
} else if (kcUserProfile.roles.includes(Role.StaffManageAccounts)) {
348-
membershipTypeCode = MembershipType.Admin
349-
} else if (kcUserProfile.roles.includes(Role.StaffViewAccounts)) {
350-
membershipTypeCode = MembershipType.User
351-
}
318+
const rolesMapping = {
319+
[Role.ContactCentreStaff]: {
320+
permissions: CommonUtils.getContactCentreStaffPermissions(),
321+
membershipType: MembershipType.Admin
322+
},
323+
[Role.StaffManageAccounts]: {
324+
permissions: CommonUtils.getAdminPermissions(),
325+
membershipType: MembershipType.Admin
326+
},
327+
[Role.StaffViewAccounts]: {
328+
permissions: CommonUtils.getViewOnlyPermissions(),
329+
membershipType: MembershipType.User
330+
}
331+
}
332+
333+
async function syncMembership(orgId: number): Promise<Member> {
334+
const { roles } = KeyCloakService.getUserInfo()
335+
336+
// If user has any of the roles in the mapping, assign the permissions and membership type
337+
const assignedRole = roles.find(role => Object.prototype.hasOwnProperty.call(rolesMapping, role))
352338

353-
membership = {
354-
membershipTypeCode: membershipTypeCode,
339+
if (assignedRole) {
340+
state.permissions = rolesMapping[assignedRole].permissions
341+
state.currentMembership = {
342+
membershipTypeCode: rolesMapping[assignedRole].membershipType,
355343
id: null,
356344
membershipStatus: MembershipStatus.Active,
357345
user: null
358346
}
347+
return state.currentMembership
359348
}
360-
permissions = permissions || []
349+
350+
// If user doesn't have any of the roles in the mapping, get the membership from the API
351+
const { data: membership } = await UserService.getMembership(orgId)
352+
const { accountStatus: statusCode } = state.currentAccountSettings
353+
const { data: permissions } = await PermissionService.getPermissions(statusCode, membership?.membershipTypeCode)
354+
355+
state.permissions = permissions || []
361356
state.currentMembership = membership
362-
state.permissions = permissions
363-
return response?.data
357+
358+
return membership
364359
}
365360

366361
/*

0 commit comments

Comments
 (0)