Browse Source

Roles: New user role that replaces the old role behavior, Closes #2088

Torkel Ödegaard 10 years ago
parent
commit
ff3843bc7f

+ 1 - 0
CHANGELOG.md

@@ -9,6 +9,7 @@
 
 **User or Organization admin**
 - [Issue #1899](https://github.com/grafana/grafana/issues/1899). Organization: You can now update the organization user role directly (without removing and readding the organization user).
+- [Issue #2088](https://github.com/grafana/grafana/issues/2088). Roles: New user role `Read Only Editor` that replaces the old `Viewer` role behavior
 
 **Backend**
 - [Issue #1905](https://github.com/grafana/grafana/issues/1905). Github OAuth: You can now configure a Github team membership requirement, thx @dewski

+ 1 - 1
pkg/api/dashboard.go

@@ -55,7 +55,7 @@ func GetDashboard(c *middleware.Context) {
 			Type:      m.DashTypeDB,
 			CanStar:   c.IsSignedIn,
 			CanSave:   c.OrgRole == m.ROLE_ADMIN || c.OrgRole == m.ROLE_EDITOR,
-			CanEdit:   c.OrgRole == m.ROLE_ADMIN || c.OrgRole == m.ROLE_EDITOR,
+			CanEdit:   c.OrgRole == m.ROLE_ADMIN || c.OrgRole == m.ROLE_EDITOR || c.OrgRole == m.ROLE_READ_ONLY_EDITOR,
 		},
 	}
 

+ 5 - 4
pkg/models/org_user.go

@@ -15,13 +15,14 @@ var (
 type RoleType string
 
 const (
-	ROLE_VIEWER RoleType = "Viewer"
-	ROLE_EDITOR RoleType = "Editor"
-	ROLE_ADMIN  RoleType = "Admin"
+	ROLE_VIEWER           RoleType = "Viewer"
+	ROLE_EDITOR           RoleType = "Editor"
+	ROLE_READ_ONLY_EDITOR RoleType = "Read Only Editor"
+	ROLE_ADMIN            RoleType = "Admin"
 )
 
 func (r RoleType) IsValid() bool {
-	return r == ROLE_VIEWER || r == ROLE_ADMIN || r == ROLE_EDITOR
+	return r == ROLE_VIEWER || r == ROLE_ADMIN || r == ROLE_EDITOR || r == ROLE_READ_ONLY_EDITOR
 }
 
 type OrgUser struct {

+ 3 - 3
public/app/features/org/partials/orgUsers.html

@@ -12,7 +12,7 @@
 		<form name="form">
 			<div class="tight-form">
 				<ul class="tight-form-list">
-					<li class="tight-form-item" style="width: 160px">
+					<li class="tight-form-item" style="width: 127px">
 						<strong>Username or Email</strong>
 					</li>
 					<li>
@@ -22,7 +22,7 @@
 						role
 					</li>
 					<li>
-						<select type="text" ng-model="user.role" class="input-small tight-form-input" ng-options="f for f in ['Viewer', 'Editor', 'Admin']">
+						<select type="text" ng-model="user.role" class="input-medium tight-form-input" ng-options="f for f in ['Viewer', 'Editor', 'Read Only Editor', 'Admin']">
 						</select>
 					</li>
 					<li>
@@ -46,7 +46,7 @@
 				<td>{{user.login}}</td>
 				<td>{{user.email}}</td>
 				<td>
-					<select type="text" ng-model="user.role" class="input-small" ng-options="f for f in ['Viewer', 'Editor', 'Admin']" ng-change="updateOrgUser(user)">
+					<select type="text" ng-model="user.role" class="input-medium" ng-options="f for f in ['Viewer', 'Editor', 'Read Only Editor', 'Admin']" ng-change="updateOrgUser(user)">
 					</select>
 				</td>
 				<td style="width: 1%">

+ 1 - 1
public/app/services/contextSrv.js

@@ -60,6 +60,6 @@ function (angular, _, store, config) {
       store.set('grafana.sidemenu', false);
     }
 
-    this.isEditor = this.hasRole('Editor') || this.hasRole('Admin') || this.hasRole('Read Only Editor');
+    this.isEditor = this.hasRole('Editor') || this.hasRole('Admin');
   });
 });