MCPcopy Index your code
hub / github.com/coder/coder / assignableRoles

Function assignableRoles

coderd/roles.go:87–116  ·  view source on GitHub ↗
(actorRoles rbac.ExpandableRoles, roles []rbac.Role, customRoles []database.CustomRole)

Source from the content-addressed store, hash-verified

85}
86
87func assignableRoles(actorRoles rbac.ExpandableRoles, roles []rbac.Role, customRoles []database.CustomRole) []codersdk.AssignableRoles {
88 assignable := make([]codersdk.AssignableRoles, 0)
89 for _, role := range roles {
90 // The member role is implied, and not assignable.
91 // If there is no display name, then the role is also unassigned.
92 // This is not the ideal logic, but works for now.
93 if role.Identifier == rbac.RoleMember() || (role.DisplayName == "") {
94 continue
95 }
96 assignable = append(assignable, codersdk.AssignableRoles{
97 Role: db2sdk.RBACRole(role),
98 Assignable: rbac.CanAssignRole(actorRoles, role.Identifier),
99 BuiltIn: true,
100 })
101 }
102
103 for _, role := range customRoles {
104 canAssign := rbac.CanAssignRole(actorRoles, rbac.CustomSiteRole())
105 if role.RoleIdentifier().IsOrgRole() {
106 canAssign = rbac.CanAssignRole(actorRoles, rbac.CustomOrganizationRole(role.OrganizationID.UUID))
107 }
108
109 assignable = append(assignable, codersdk.AssignableRoles{
110 Role: db2sdk.Role(role),
111 Assignable: canAssign,
112 BuiltIn: false,
113 })
114 }
115 return assignable
116}

Callers 2

AssignableSiteRolesMethod · 0.85
assignableOrgRolesMethod · 0.85

Calls 8

RoleMemberFunction · 0.92
RBACRoleFunction · 0.92
CanAssignRoleFunction · 0.92
CustomSiteRoleFunction · 0.92
CustomOrganizationRoleFunction · 0.92
RoleFunction · 0.92
IsOrgRoleMethod · 0.80
RoleIdentifierMethod · 0.80

Tested by

no test coverage detected