func marshalPrincipal(princ auth.Principal) ([]byte, error) { name := externalUserName(princ.Name()) info := db.PrincipalConfig{ Name: &name, ExplicitChannels: princ.ExplicitChannels().AsSet(), } if user, ok := princ.(auth.User); ok { info.Channels = user.InheritedChannels().AsSet() info.Email = user.Email() info.Disabled = user.Disabled() info.ExplicitRoleNames = user.ExplicitRoles().AllChannels() info.RoleNames = user.RoleNames().AllChannels() } else { info.Channels = princ.Channels().AsSet() } return json.Marshal(info) }
func (dbc *DatabaseContext) GetPrincipal(name string, isUser bool) (info *PrincipalConfig, err error) { var princ auth.Principal if isUser { princ, err = dbc.Authenticator().GetUser(name) } else { princ, err = dbc.Authenticator().GetRole(name) } if princ == nil { return } info = new(PrincipalConfig) info.Name = &name info.ExplicitChannels = princ.ExplicitChannels().AsSet() if user, ok := princ.(auth.User); ok { info.Channels = user.InheritedChannels().AsSet() info.Email = user.Email() info.Disabled = user.Disabled() info.ExplicitRoleNames = user.ExplicitRoles().AllChannels() info.RoleNames = user.RoleNames().AllChannels() } else { info.Channels = princ.Channels().AsSet() } return }