external user permissions
parent
69c9f03b90
commit
fe40b0bcd6
|
@ -64,16 +64,36 @@ class RolesController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fil
|
||||||
loadProject: ->
|
loadProject: ->
|
||||||
return @rs.projects.get(@scope.projectId).then (project) =>
|
return @rs.projects.get(@scope.projectId).then (project) =>
|
||||||
@scope.project = project
|
@scope.project = project
|
||||||
|
|
||||||
@scope.$emit('project:loaded', project)
|
@scope.$emit('project:loaded', project)
|
||||||
@scope.anyComputableRole = _.some(_.map(project.roles, (point) -> point.computable))
|
@scope.anyComputableRole = _.some(_.map(project.roles, (point) -> point.computable))
|
||||||
|
|
||||||
return project
|
return project
|
||||||
|
|
||||||
|
loadExternalUserRole: (roles) ->
|
||||||
|
roles = roles.map (role) ->
|
||||||
|
role.external_user = false
|
||||||
|
|
||||||
|
return role
|
||||||
|
|
||||||
|
public_permission = {
|
||||||
|
"name": "External User",
|
||||||
|
"permissions": @scope.project.public_permissions,
|
||||||
|
"external_user": true
|
||||||
|
}
|
||||||
|
|
||||||
|
roles.push(public_permission)
|
||||||
|
|
||||||
|
return roles
|
||||||
|
|
||||||
loadRoles: ->
|
loadRoles: ->
|
||||||
return @rs.roles.list(@scope.projectId).then (data) =>
|
return @rs.roles.list(@scope.projectId)
|
||||||
@scope.roles = data
|
.then @loadExternalUserRole
|
||||||
|
.then (roles) =>
|
||||||
|
@scope.roles = roles
|
||||||
@scope.role = @scope.roles[0]
|
@scope.role = @scope.roles[0]
|
||||||
return data
|
|
||||||
|
return roles
|
||||||
|
|
||||||
loadInitialData: ->
|
loadInitialData: ->
|
||||||
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
|
promise = @repo.resolve({pslug: @params.pslug}).then (data) =>
|
||||||
|
@ -256,7 +276,7 @@ RolePermissionsDirective = ($rootscope, $repo, $confirm) ->
|
||||||
<div class="category-item" data-id="<%- permission.key %>">
|
<div class="category-item" data-id="<%- permission.key %>">
|
||||||
<span><%- permission.description %></span>
|
<span><%- permission.description %></span>
|
||||||
<div class="check">
|
<div class="check">
|
||||||
<input type="checkbox" <% if(permission.active) { %>checked="checked"<% } %>/>
|
<input type="checkbox" <% if(!permission.editable) { %>disabled="disabled"<% } %> <% if(permission.active) { %>checked="checked"<% } %>/>
|
||||||
<div></div>
|
<div></div>
|
||||||
<span class="check-text check-yes">Yes</span>
|
<span class="check-text check-yes">Yes</span>
|
||||||
<span class="check-text check-no">No</span>
|
<span class="check-text check-no">No</span>
|
||||||
|
@ -279,10 +299,23 @@ RolePermissionsDirective = ($rootscope, $repo, $confirm) ->
|
||||||
setActivePermissions = (permissions) ->
|
setActivePermissions = (permissions) ->
|
||||||
return _.map(permissions, (x) -> _.extend({}, x, {active: x["key"] in role.permissions}))
|
return _.map(permissions, (x) -> _.extend({}, x, {active: x["key"] in role.permissions}))
|
||||||
|
|
||||||
|
isPermissionEditable = (permission, role, project) ->
|
||||||
|
if role.external_user &&
|
||||||
|
!project.is_private &&
|
||||||
|
permission.key.indexOf("view_") == 0
|
||||||
|
return false
|
||||||
|
else
|
||||||
|
return true
|
||||||
|
|
||||||
setActivePermissionsPerCategory = (category) ->
|
setActivePermissionsPerCategory = (category) ->
|
||||||
return _.map(category, (x) ->
|
return _.map(category, (cat) ->
|
||||||
_.extend({}, x, {
|
cat.permissions = cat.permissions.map (permission) ->
|
||||||
activePermissions: _.filter(x["permissions"], "active").length
|
permission.editable = isPermissionEditable(permission, role, $scope.project)
|
||||||
|
|
||||||
|
return permission
|
||||||
|
|
||||||
|
_.extend({}, cat, {
|
||||||
|
activePermissions: _.filter(cat["permissions"], "active").length
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -366,6 +399,7 @@ RolePermissionsDirective = ($rootscope, $repo, $confirm) ->
|
||||||
return activePermissions
|
return activePermissions
|
||||||
|
|
||||||
target = angular.element(event.currentTarget)
|
target = angular.element(event.currentTarget)
|
||||||
|
|
||||||
$scope.role.permissions = getActivePermissions()
|
$scope.role.permissions = getActivePermissions()
|
||||||
|
|
||||||
onSuccess = (role) ->
|
onSuccess = (role) ->
|
||||||
|
@ -381,6 +415,13 @@ RolePermissionsDirective = ($rootscope, $repo, $confirm) ->
|
||||||
target.prop "checked", !target.prop("checked")
|
target.prop "checked", !target.prop("checked")
|
||||||
$scope.role.permissions = getActivePermissions()
|
$scope.role.permissions = getActivePermissions()
|
||||||
|
|
||||||
|
if $scope.role.external_user
|
||||||
|
$scope.project.public_permissions = $scope.role.permissions
|
||||||
|
$scope.project.anon_permissions = $scope.role.permissions.filter (permission) ->
|
||||||
|
return permission.indexOf("view_") == 0
|
||||||
|
|
||||||
|
$repo.save($scope.project)
|
||||||
|
else
|
||||||
$repo.save($scope.role).then onSuccess, onError
|
$repo.save($scope.role).then onSuccess, onError
|
||||||
|
|
||||||
$scope.$on "$destroy", ->
|
$scope.$on "$destroy", ->
|
||||||
|
|
|
@ -8,7 +8,7 @@ div.wrapper.roles(ng-controller="RolesController as ctrl",
|
||||||
section.main.admin-roles.admin-common
|
section.main.admin-roles.admin-common
|
||||||
.header-with-actions
|
.header-with-actions
|
||||||
include ../includes/components/mainTitle
|
include ../includes/components/mainTitle
|
||||||
.action-buttons
|
.action-buttons(ng-if="!role.external_user")
|
||||||
a.button-red.delete-role(href="", title="Delete", ng-click="ctrl.delete()")
|
a.button-red.delete-role(href="", title="Delete", ng-click="ctrl.delete()")
|
||||||
span Delete
|
span Delete
|
||||||
|
|
||||||
|
@ -24,7 +24,7 @@ div.wrapper.roles(ng-controller="RolesController as ctrl",
|
||||||
|
|
||||||
div.any-computable-role(ng-hide="anyComputableRole") Be careful, no role in your project will be able to estimate the point value for user stories
|
div.any-computable-role(ng-hide="anyComputableRole") Be careful, no role in your project will be able to estimate the point value for user stories
|
||||||
|
|
||||||
div.general-category
|
div.general-category(ng-if="!role.external_user")
|
||||||
| When enabled, members assigned to this role will be able to estimate the point value for user stories
|
| When enabled, members assigned to this role will be able to estimate the point value for user stories
|
||||||
div.check
|
div.check
|
||||||
input(type="checkbox", ng-model="role.computable", ng-change="ctrl.setComputable()")
|
input(type="checkbox", ng-model="role.computable", ng-change="ctrl.setComputable()")
|
||||||
|
|
|
@ -101,5 +101,11 @@
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
input:disabled {
|
||||||
|
cursor: auto;
|
||||||
|
+ div {
|
||||||
|
background-color: #ccc;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue