4 Commits

7 changed files with 42 additions and 30 deletions

View File

@@ -51,7 +51,7 @@ return [
'DELETE_YES' => 'Yes, delete organisation', 'DELETE_YES' => 'Yes, delete organisation',
'DELETION_SUCCESSFUL' => 'Successfully deleted organisation <strong>{{name}}</strong>', 'DELETION_SUCCESSFUL' => 'Successfully deleted organisation <strong>{{name}}</strong>',
'MEMBER_COUNT' => '# Members <sub>(excl admins)</sub>', 'MEMBER_COUNT' => '# Members',
'ADMIN_COUNT' => '# Admins', 'ADMIN_COUNT' => '# Admins',
'SELF' => [ 'SELF' => [

View File

@@ -7,7 +7,7 @@
* @license https://git.avsdev.uk/avsdev/sprinkle-organisations/blob/master/LICENSE.md (LGPL-3.0 License) * @license https://git.avsdev.uk/avsdev/sprinkle-organisations/blob/master/LICENSE.md (LGPL-3.0 License)
*/ */
namespace UserFrosting\Sprinkle\Organisations\Database\Migrations\v010; namespace UserFrosting\Sprinkle\Organisations\Database\Migrations\v1_0_0;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use UserFrosting\Sprinkle\Core\Database\Migration; use UserFrosting\Sprinkle\Core\Database\Migration;
@@ -25,7 +25,7 @@ class OrganisationApprovalsTable extends Migration
* {@inheritdoc} * {@inheritdoc}
*/ */
public static $dependencies = [ public static $dependencies = [
'\UserFrosting\Sprinkle\Account\Database\Migrations\v400\UsersTable', '\UserFrosting\Sprinkle\Account\Database\Migrations\v430\UpdateUsersTable',
]; ];
/** /**

View File

@@ -7,7 +7,7 @@
* @license https://git.avsdev.uk/avsdev/sprinkle-organisations/blob/master/LICENSE.md (LGPL-3.0 License) * @license https://git.avsdev.uk/avsdev/sprinkle-organisations/blob/master/LICENSE.md (LGPL-3.0 License)
*/ */
namespace UserFrosting\Sprinkle\Organisations\Database\Migrations\v010; namespace UserFrosting\Sprinkle\Organisations\Database\Migrations\v1_0_0;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use UserFrosting\Sprinkle\Organisations\Database\Models\Organisation; use UserFrosting\Sprinkle\Organisations\Database\Models\Organisation;
@@ -29,8 +29,8 @@ class OrganisationMembersTable extends Migration
* {@inheritdoc} * {@inheritdoc}
*/ */
public static $dependencies = [ public static $dependencies = [
'\UserFrosting\Sprinkle\Account\Database\Migrations\v400\UsersTable', '\UserFrosting\Sprinkle\Account\Database\Migrations\v430\UpdateUsersTable',
'\UserFrosting\Sprinkle\Organisations\Database\Migrations\v010\OrganisationsTable', '\UserFrosting\Sprinkle\Organisations\Database\Migrations\v1_0_0\OrganisationsTable',
]; ];
/** /**

View File

@@ -7,7 +7,7 @@
* @license https://git.avsdev.uk/avsdev/sprinkle-organisations/blob/master/LICENSE.md (LGPL-3.0 License) * @license https://git.avsdev.uk/avsdev/sprinkle-organisations/blob/master/LICENSE.md (LGPL-3.0 License)
*/ */
namespace UserFrosting\Sprinkle\Organisations\Database\Migrations\v010; namespace UserFrosting\Sprinkle\Organisations\Database\Migrations\v1_0_0;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use UserFrosting\Sprinkle\Core\Database\Migration; use UserFrosting\Sprinkle\Core\Database\Migration;
@@ -25,7 +25,7 @@ class OrganisationMembershipApprovalsTable extends Migration
* {@inheritdoc} * {@inheritdoc}
*/ */
public static $dependencies = [ public static $dependencies = [
'\UserFrosting\Sprinkle\Account\Database\Migrations\v400\UsersTable', '\UserFrosting\Sprinkle\Account\Database\Migrations\v430\UpdateUsersTable',
]; ];
/** /**

View File

@@ -7,7 +7,7 @@
* @license https://git.avsdev.uk/avsdev/sprinkle-organisations/blob/master/LICENSE.md (LGPL-3.0 License) * @license https://git.avsdev.uk/avsdev/sprinkle-organisations/blob/master/LICENSE.md (LGPL-3.0 License)
*/ */
namespace UserFrosting\Sprinkle\Organisations\Database\Migrations\v010; namespace UserFrosting\Sprinkle\Organisations\Database\Migrations\v1_0_0;
use Illuminate\Database\Schema\Blueprint; use Illuminate\Database\Schema\Blueprint;
use UserFrosting\Sprinkle\Organisations\Database\Models\Organisation; use UserFrosting\Sprinkle\Organisations\Database\Models\Organisation;
@@ -27,7 +27,7 @@ class OrganisationsTable extends Migration
* {@inheritdoc} * {@inheritdoc}
*/ */
public static $dependencies = [ public static $dependencies = [
'\UserFrosting\Sprinkle\Account\Database\Migrations\v400\UsersTable', '\UserFrosting\Sprinkle\Account\Database\Migrations\v430\UpdateUsersTable',
]; ];
/** /**

View File

@@ -50,6 +50,11 @@ class OrganisationPermissions extends BaseSeed
'organisations-admin' => Role::where('slug', 'organisations-admin')->first()->id, 'organisations-admin' => Role::where('slug', 'organisations-admin')->first()->id,
]; ];
$canAdminOrgUsers = "(has_role(self.id,{$roleIds['organisations-admin']}) || (has_matching_organisation(self.id,user.id,1) && !has_role(user.id,{$roleIds['organisations-admin']})))";
$canAdminOrgAdmins = "(has_role(self.id,{$roleIds['organisations-admin']}) || has_matching_organisation(self.id,user.id,1))";
$excludeMasters = "(!is_master(user.id) && !has_role(user.id,{$roleIds['site-admin']}))";
$isSelf = "equals_num(self.id,user.id)";
return [ return [
'create_organisation' => new Permission([ 'create_organisation' => new Permission([
'slug' => 'create_organisation', 'slug' => 'create_organisation',
@@ -127,12 +132,6 @@ class OrganisationPermissions extends BaseSeed
]), ]),
// 'view_organisation_members_field' => new Permission([
// 'slug' => 'view_organisation_field',
// 'name' => 'View organisation members field',
// 'conditions' => "in(property,['members'])",
// 'description' => 'View members field of any organisation.',
// ]),
'view_organisation_members' => new Permission([ 'view_organisation_members' => new Permission([
'slug' => 'view_organisation_field', 'slug' => 'view_organisation_field',
'name' => 'View organisation members', 'name' => 'View organisation members',
@@ -200,12 +199,12 @@ class OrganisationPermissions extends BaseSeed
]), ]),
// 'uri_user_in_organisation' => new Permission([ 'uri_user_in_organisation' => new Permission([
// 'slug' => 'uri_user', 'slug' => 'uri_user',
// 'name' => 'View user', 'name' => 'View user',
// 'conditions' => "has_matching_organisation(self.id,user.id,true) && !is_master(user.id) && !has_role(user.id,{$roleIds['site-admin']}) && (!has_role(user.id,{$roleIds['organisations-admin']}) || equals_num(self.id,user.id))", 'conditions' => "(($canAdminOrgAdmins && $excludeMasters) || $isSelf)",
// 'description' => 'View the user page of any user in your group, except the master user and Site and (global) Organisation Administrators (except yourself).', 'description' => 'View the user page of any user in your orgnisation, except the master user and Site and (global) Organisation Administrators (except yourself).',
// ]), ]),
'view_user_field' => new Permission([ 'view_user_field' => new Permission([
'slug' => 'view_user_field', 'slug' => 'view_user_field',
'name' => 'View user', 'name' => 'View user',
@@ -215,35 +214,43 @@ class OrganisationPermissions extends BaseSeed
'update_user_field' => new Permission([ 'update_user_field' => new Permission([
'slug' => 'update_user_field', 'slug' => 'update_user_field',
'name' => 'Edit user', 'name' => 'Edit user',
'conditions' => "!has_role(user.id,{$roleIds['site-admin']}) && subset(fields,['organisations'])", 'conditions' => "$excludeMasters && subset(fields,['organisations'])",
'description' => 'Edit organisations for users who are not Site Administrators.', 'description' => 'Edit organisations for users who are not Site Administrators.',
]), ]),
'view_user_field_group' => new Permission([ 'view_user_field_group' => new Permission([
'slug' => 'view_user_field', 'slug' => 'view_user_field',
'name' => 'View user', 'name' => 'View user',
'conditions' => "equals_num(self.group_id,user.group_id) && !is_master(user.id) && !has_role(user.id,{$roleIds['site-admin']}) && (!has_role(user.id,{$roleIds['group-admin']}) || equals_num(self.id,user.id)) && in(property,['organisations'])", 'conditions' => "equals_num(self.group_id,user.group_id) && $excludeMasters && (!has_role(user.id,{$roleIds['group-admin']}) || equals_num(self.id,user.id)) && in(property,['organisations'])",
'description' => 'View organisations of any user in your own group, except the master user and Site and Group Administrators (except yourself).', 'description' => 'View organisations of any user in your own group, except the master user and Site and Group Administrators (except yourself).',
]), ]),
'update_user_field_group' => new Permission([ 'update_user_field_group' => new Permission([
'slug' => 'update_user_field', 'slug' => 'update_user_field',
'name' => 'Edit group user', 'name' => 'Edit group user',
'conditions' => "equals_num(self.group_id,user.group_id) && !is_master(user.id) && !has_role(user.id,{$roleIds['site-admin']}) && (!has_role(user.id,{$roleIds['group-admin']}) || equals_num(self.id,user.id)) && subset(fields,['organisations'])", 'conditions' => "equals_num(self.group_id,user.group_id) && $excludeMasters && (!has_role(user.id,{$roleIds['group-admin']}) || equals_num(self.id,user.id)) && subset(fields,['organisations'])",
'description' => 'Edit organisations for users in your own group who are not Site or Group Administrators, except yourself.', 'description' => 'Edit organisations for users in your own group who are not Site or Group Administrators, except yourself.',
]), ]),
'view_user_field_organisation' => new Permission([ 'view_user_field_organisation_audit' => new Permission([
'slug' => 'view_user_field', 'slug' => 'view_user_field',
'name' => 'View user', 'name' => 'View user',
'conditions' => "has_matching_organisation(self.id,user.id) && !is_master(user.id) && !has_role(user.id,{$roleIds['site-admin']}) && (!has_role(user.id,{$roleIds['organisations-admin']}) || equals_num(self.id,user.id)) && in(property,['user_name','name','email','locale','roles','group','activities','organisations'])", 'conditions' => "(($canAdminOrgUsers && $excludeMasters) || $isSelf) && in(property,['activities'])",
'description' => 'View certain properties of any user in your own organisation, except the master user and Site and (global) Organisation Administrators (except yourself).', 'description' => 'View certain properties of any user in your own organisation, except the master user and Site and (global) Organisation Administrators (except yourself).',
]), ]),
'update_user_field_organisation' => new Permission([ 'update_user_field_organisation' => new Permission([
'slug' => 'update_user_field', 'slug' => 'update_user_field',
'name' => 'Edit organisation user', 'name' => 'Edit organisation user',
'conditions' => "has_matching_organisation(self.id,user.id,1) && !is_master(user.id) && !has_role(user.id,{$roleIds['site-admin']}) && (!has_role(user.id,{$roleIds['organisations-admin']}) || equals_num(self.id,user.id)) && subset(fields,['name','email','locale','flag_enabled','flag_verified','password'])",
'conditions' => "(($canAdminOrgUsers && $excludeMasters) || $isSelf) && subset(fields,['name','email','locale','flag_enabled','flag_verified','password'])",
'description' => 'Edit users in your own organisation who are not Site or (global) Organisation Administrators, except yourself.', 'description' => 'Edit users in your own organisation who are not Site or (global) Organisation Administrators, except yourself.',
]), ]),
'view_user_field_organisation' => new Permission([
'slug' => 'view_user_field',
'name' => 'View user',
'conditions' => "(($canAdminOrgUsers && $excludeMasters) || $isSelf) && in(property,['user_name','name','email','locale','roles','group','organisations'])",
'description' => 'View certain properties of any user in your own organisation, except the master user and Site and (global) Organisation Administrators (except yourself).',
]),
]; ];
} }
@@ -328,13 +335,15 @@ class OrganisationPermissions extends BaseSeed
$permissions['uri_organisation']->id, $permissions['uri_organisation']->id,
$permissions['uri_organisations']->id, $permissions['uri_organisations']->id,
$permissions['uri_user_in_organisation']->id,
$permissions['uri_deleted_organisations']->id, $permissions['uri_deleted_organisations']->id,
$permissions['view_organisation_members']->id, $permissions['view_organisation_members']->id,
$permissions['promote_organisation_member']->id, $permissions['promote_organisation_member']->id,
#$permissions['view_user_field']->id, $permissions['view_user_field_organisation_audit']->id,
#$permissions['update_user_field']->id, $permissions['view_user_field_organisation']->id,
$permissions['update_user_field_organisation']->id,
]); ]);
} }
@@ -352,6 +361,7 @@ class OrganisationPermissions extends BaseSeed
$permissions['uri_organisation_own']->id, $permissions['uri_organisation_own']->id,
$permissions['uri_organisations']->id, $permissions['uri_organisations']->id,
$permissions['uri_user_in_organisation']->id,
$permissions['view_user_field_organisation']->id, $permissions['view_user_field_organisation']->id,
$permissions['update_user_field_organisation']->id, $permissions['update_user_field_organisation']->id,

View File

@@ -168,6 +168,7 @@
{% endblock %} {% endblock %}
</div> </div>
</div> </div>
{% if checkAccess('view_user_field', { 'user': user, 'property': 'activities' }) %}
{% if 'activities' not in widgets.hidden %} {% if 'activities' not in widgets.hidden %}
<div class="col-lg-8"> <div class="col-lg-8">
{% block activity_box %} {% block activity_box %}
@@ -188,6 +189,7 @@
{% endblock %} {% endblock %}
</div> </div>
{% endif %} {% endif %}
{% endif %}
</div> </div>
{% if 'permissions' not in widgets.hidden %} {% if 'permissions' not in widgets.hidden %}
<div class="row"> <div class="row">