GetImplicitRolesForUser gets implicit roles that a user has. Compared to GetRolesForUser(), this function retrieves indirect roles besides direct roles. For example: g, alice, role:admin g, role:admin, role:user GetRolesForUser("alice") can only get: ["role:admin"]. But GetImplicitRolesForUser("ali
(name string, domain ...string)
| 231 | // GetRolesForUser("alice") can only get: ["role:admin"]. |
| 232 | // But GetImplicitRolesForUser("alice") will get: ["role:admin", "role:user"]. |
| 233 | func (e *Enforcer) GetImplicitRolesForUser(name string, domain ...string) ([]string, error) { |
| 234 | var res []string |
| 235 | |
| 236 | for rm := range e.rmMap { |
| 237 | roles, err := e.GetNamedImplicitRolesForUser(rm, name, domain...) |
| 238 | if err != nil { |
| 239 | return nil, err |
| 240 | } |
| 241 | res = append(res, roles...) |
| 242 | } |
| 243 | |
| 244 | for crm := range e.condRmMap { |
| 245 | roles, err := e.GetNamedImplicitRolesForUser(crm, name, domain...) |
| 246 | if err != nil { |
| 247 | return nil, err |
| 248 | } |
| 249 | res = append(res, roles...) |
| 250 | } |
| 251 | |
| 252 | return res, nil |
| 253 | } |
| 254 | |
| 255 | // GetNamedImplicitRolesForUser gets implicit roles that a user has by named role definition. |
| 256 | // Compared to GetImplicitRolesForUser(), this function retrieves indirect roles besides direct roles. |