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
-
+
+ User status