diff --git a/pkg/api/team_members.go b/pkg/api/team_members.go index 5d34323c55f..0d8139e4e5c 100644 --- a/pkg/api/team_members.go +++ b/pkg/api/team_members.go @@ -30,23 +30,6 @@ func GetTeamMembers(c *m.ReqContext) Response { return JSON(200, query.Result) } -func GetAuthProviderLabel(authModule string) string { - switch authModule { - case "oauth_github": - return "GitHub" - case "oauth_google": - return "Google" - case "oauth_gitlab": - return "GitLab" - case "oauth_grafana_com", "oauth_grafananet": - return "grafana.com" - case "ldap", "": - return "LDAP" - default: - return "OAuth" - } -} - // POST /api/teams/:teamId/members func (hs *HTTPServer) AddTeamMember(c *m.ReqContext, cmd m.AddTeamMemberCommand) Response { cmd.OrgId = c.OrgId diff --git a/pkg/api/user.go b/pkg/api/user.go index 2d82b60ba33..528e7431ffd 100644 --- a/pkg/api/user.go +++ b/pkg/api/user.go @@ -29,8 +29,11 @@ func getUserUserProfile(userID int64) Response { } getAuthQuery := m.GetAuthInfoQuery{UserId: userID} + query.Result.AuthLabels = []string{} if err := bus.Dispatch(&getAuthQuery); err == nil { - query.Result.AuthModule = []string{getAuthQuery.Result.AuthModule} + authLabel := GetAuthProviderLabel(getAuthQuery.Result.AuthModule) + query.Result.AuthLabels = append(query.Result.AuthLabels, authLabel) + query.Result.IsExternal = true } return JSON(200, query.Result) @@ -277,6 +280,12 @@ func searchUser(c *m.ReqContext) (*m.SearchUsersQuery, error) { for _, user := range query.Result.Users { user.AvatarUrl = dtos.GetGravatarUrl(user.Email) + user.AuthLabels = make([]string, 0) + if user.AuthModule != nil && len(user.AuthModule) > 0 { + for _, authModule := range user.AuthModule { + user.AuthLabels = append(user.AuthLabels, GetAuthProviderLabel(authModule)) + } + } } query.Result.Page = page @@ -315,3 +324,20 @@ func ClearHelpFlags(c *m.ReqContext) Response { return JSON(200, &util.DynMap{"message": "Help flag set", "helpFlags1": cmd.HelpFlags1}) } + +func GetAuthProviderLabel(authModule string) string { + switch authModule { + case "oauth_github": + return "GitHub" + case "oauth_google": + return "Google" + case "oauth_gitlab": + return "GitLab" + case "oauth_grafana_com", "oauth_grafananet": + return "grafana.com" + case "ldap", "": + return "LDAP" + default: + return "OAuth" + } +} diff --git a/pkg/models/user.go b/pkg/models/user.go index a9032f1a8d8..bf52aed6160 100644 --- a/pkg/models/user.go +++ b/pkg/models/user.go @@ -216,7 +216,8 @@ type UserProfileDTO struct { OrgId int64 `json:"orgId"` IsGrafanaAdmin bool `json:"isGrafanaAdmin"` IsDisabled bool `json:"isDisabled"` - AuthModule []string `json:"authModule"` + IsExternal bool `json:"isExternal"` + AuthLabels []string `json:"authLabels"` } type UserSearchHitDTO struct { @@ -229,7 +230,8 @@ type UserSearchHitDTO struct { IsDisabled bool `json:"isDisabled"` LastSeenAt time.Time `json:"lastSeenAt"` LastSeenAtAge string `json:"lastSeenAtAge"` - AuthModule AuthModuleConversion `json:"authModule"` + AuthLabels []string `json:"authLabels"` + AuthModule AuthModuleConversion `json:"-"` } type UserIdDTO struct { diff --git a/public/app/features/admin/AdminEditUserCtrl.ts b/public/app/features/admin/AdminEditUserCtrl.ts index 8eba14fbcdc..1816a6dfb1d 100644 --- a/public/app/features/admin/AdminEditUserCtrl.ts +++ b/public/app/features/admin/AdminEditUserCtrl.ts @@ -179,7 +179,7 @@ export default class AdminEditUserCtrl { const user = $scope.user; // External user can not be disabled - if (user.authModule) { + if (user.isExternal) { event.preventDefault(); event.stopPropagation(); return; diff --git a/public/app/features/admin/AdminListUsersCtrl.ts b/public/app/features/admin/AdminListUsersCtrl.ts index 3f1e1e1bf51..3e4ba2e37a3 100644 --- a/public/app/features/admin/AdminListUsersCtrl.ts +++ b/public/app/features/admin/AdminListUsersCtrl.ts @@ -1,5 +1,6 @@ import { BackendSrv } from 'app/core/services/backend_srv'; import { NavModelSrv } from 'app/core/core'; +import tags from 'app/core/utils/tags'; export default class AdminListUsersCtrl { users: any; @@ -32,6 +33,8 @@ export default class AdminListUsersCtrl { for (let i = 1; i < this.totalPages + 1; i++) { this.pages.push({ page: i, current: i === this.page }); } + + this.addUsersAuthLabels(); }); } @@ -40,10 +43,29 @@ export default class AdminListUsersCtrl { this.getUsers(); } - getAuthModule(user: any) { - if (user.authModule && user.authModule.length) { - return user.authModule[0]; + addUsersAuthLabels() { + for (const user of this.users) { + user.authLabel = getAuthLabel(user); + user.authLabelStyle = getAuthLabelStyle(user.authLabel); } - return undefined; } } + +function getAuthLabel(user: any) { + if (user.authLabels && user.authLabels.length) { + return user.authLabels[0]; + } + return ''; +} + +function getAuthLabelStyle(label: string) { + if (label === 'LDAP' || !label) { + return {}; + } + + const { color, borderColor } = tags.getTagColorsFromName(label); + return { + 'background-color': color, + 'border-color': borderColor, + }; +} diff --git a/public/app/features/admin/partials/edit_user.html b/public/app/features/admin/partials/edit_user.html index 12bfbe8f722..7182f123149 100644 --- a/public/app/features/admin/partials/edit_user.html +++ b/public/app/features/admin/partials/edit_user.html @@ -118,48 +118,52 @@

Sessions

- - - - - - - - - - - - - - - - - - - - -
Last seenLogged onIP addressBrowser & OS
Now{{session.seenAt}}{{session.createdAt}}{{session.clientIp}}{{session.browser}} on {{session.os}} {{session.osVersion}} - -
+
+ + + + + + + + + + + + + + + + + + + + +
Last seenLogged onIP addressBrowser & OS
Now{{session.seenAt}}{{session.createdAt}}{{session.clientIp}}{{session.browser}} on {{session.os}} {{session.osVersion}} + +
+
+
+ +
- + +

User status

-

User status

-
@@ -168,8 +172,8 @@ class="btn btn-primary" ng-if="user.isDisabled" ng-click="disableUser($event)" - bs-tooltip="user.authModule ? 'External user cannot be activated or deactivated' : ''" - ng-class="{'disabled': user.authModule}" + bs-tooltip="user.isExternal ? 'External user cannot be enabled or disabled' : ''" + ng-class="{'disabled': user.isExternal}" > Enable diff --git a/public/app/features/admin/partials/users.html b/public/app/features/admin/partials/users.html index da33deeef0c..21346b92aa7 100644 --- a/public/app/features/admin/partials/users.html +++ b/public/app/features/admin/partials/users.html @@ -55,7 +55,9 @@ - LDAP + + {{user.authLabel}} + Disabled