From a6160e30262107ff73c253ecc46fffaa2986f79b Mon Sep 17 00:00:00 2001 From: zotlabs Date: Tue, 7 Feb 2017 16:43:00 -0800 Subject: move permcat library functions to Zlib --- Zotlabs/Lib/Permcat.php | 63 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 Zotlabs/Lib/Permcat.php (limited to 'Zotlabs/Lib/Permcat.php') diff --git a/Zotlabs/Lib/Permcat.php b/Zotlabs/Lib/Permcat.php new file mode 100644 index 000000000..d677cd704 --- /dev/null +++ b/Zotlabs/Lib/Permcat.php @@ -0,0 +1,63 @@ +permcats[] = [ + 'name' => $name, + 'localname' => $localname, + 'perms' => Zaccess\Permissions::Operms($perms) + ]; + + + $p = Zaccess\PermissionRoles::permcats($channel_id); + if($p) { + for($x = 0; $x < count($p); $x++) { + $this->permcats[] = [ + 'name' => $p[$x][0], + 'localname' => $p[$x][1], + 'perms' => Zaccess\Permissions::Operms(Zaccess\Permissions::FilledPerms($p[$x][2])) + ]; + } + } + } + + + public function listing() { + return $this->permcats; + } + + public function fetch($name) { + if($name && $this->permcats) { + foreach($this->permcats as $permcat) { + if(strcasecmp($permcat['name'],$name) === 0) { + return $permcat; + } + } + } + return ['error' => true]; + } + +} \ No newline at end of file -- cgit v1.2.3 From 2d3e20d96ea4dd08b982f9ff0fcfa94949fb853b Mon Sep 17 00:00:00 2001 From: zotlabs Date: Tue, 7 Feb 2017 17:51:56 -0800 Subject: move permcat initialisation to zlib --- Zotlabs/Lib/Permcat.php | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) (limited to 'Zotlabs/Lib/Permcat.php') diff --git a/Zotlabs/Lib/Permcat.php b/Zotlabs/Lib/Permcat.php index d677cd704..a38645f73 100644 --- a/Zotlabs/Lib/Permcat.php +++ b/Zotlabs/Lib/Permcat.php @@ -32,7 +32,7 @@ class Permcat { ]; - $p = Zaccess\PermissionRoles::permcats($channel_id); + $p = $this->load_permcats($channel_id); if($p) { for($x = 0; $x < count($p); $x++) { $this->permcats[] = [ @@ -60,4 +60,51 @@ class Permcat { return ['error' => true]; } + public function load_permcats($uid) { + + $permcats = [ + [ 'follower', t('follower','permcat'), + [ 'view_stream','view_profile','view_contacts','view_storage','view_pages','view_wiki', + 'post_like' ] + ], + + [ 'contributor', t('contributor','permcat'), + [ 'view_stream','view_profile','view_contacts','view_storage','view_pages','view_wiki', + 'post_wall','post_comments','write_wiki','post_like','tag_deliver','chat' ] + ], + [ 'trusted', t('trusted','permcat'), + [ 'view_stream','view_profile','view_contacts','view_storage','view_pages', + 'write_storage','post_wall','write_pages','write_wiki','post_comments','post_like','tag_deliver', + 'chat', 'republish' ] + ], + [ 'moderator', t('moderator','permcat'), + [ 'view_stream','view_profile','view_contacts','view_storage','view_pages', + 'write_storage','post_wall','wite_pages','write_wiki','post_comments','post_like','tag_deliver', + 'chat', 'republish' ] + ] + ]; + + if($uid) { + $x = q("select * from pconfig where uid = %d and cat = 'permcat'", + intval($uid) + ); + if($x) { + foreach($x as $xv) { + $permcats[] = [ $xv['k'], $xv['k'], $xv['v'] ]; + } + } + } + + call_hooks('permcats',$permcats); + + return $permcats; + + } + + + + + + + } \ No newline at end of file -- cgit v1.2.3 From 46d0e23e7bcb3bb1d000bae8dea7e52d4a1d018f Mon Sep 17 00:00:00 2001 From: zotlabs Date: Tue, 7 Feb 2017 19:49:15 -0800 Subject: atokens - we only need one permission column --- Zotlabs/Lib/Permcat.php | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'Zotlabs/Lib/Permcat.php') diff --git a/Zotlabs/Lib/Permcat.php b/Zotlabs/Lib/Permcat.php index a38645f73..525e55091 100644 --- a/Zotlabs/Lib/Permcat.php +++ b/Zotlabs/Lib/Permcat.php @@ -79,7 +79,7 @@ class Permcat { ], [ 'moderator', t('moderator','permcat'), [ 'view_stream','view_profile','view_contacts','view_storage','view_pages', - 'write_storage','post_wall','wite_pages','write_wiki','post_comments','post_like','tag_deliver', + 'write_storage','post_wall','write_pages','write_wiki','post_comments','post_like','tag_deliver', 'chat', 'republish' ] ] ]; @@ -101,10 +101,13 @@ class Permcat { } + static public function update($channel_id, $name,$permarr) { + PConfig::Set($channel_id,'permcat',$name,$permarr); + } - - - + static public function delete($channel_id,$name) { + PConfig::Delete($channel_id,'permcat',$name); + } } \ No newline at end of file -- cgit v1.2.3 From 30659aef5062a5e6a4ef94f63f8bbb2f89fb3965 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Tue, 7 Feb 2017 20:29:03 -0800 Subject: initial permcat creation ability, in /settings/permcats; functional permcat creation for testing but still needs a lot of UX work before promoting the ability --- Zotlabs/Lib/Permcat.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'Zotlabs/Lib/Permcat.php') diff --git a/Zotlabs/Lib/Permcat.php b/Zotlabs/Lib/Permcat.php index 525e55091..032257be6 100644 --- a/Zotlabs/Lib/Permcat.php +++ b/Zotlabs/Lib/Permcat.php @@ -90,7 +90,8 @@ class Permcat { ); if($x) { foreach($x as $xv) { - $permcats[] = [ $xv['k'], $xv['k'], $xv['v'] ]; + $value = ((preg_match('|^a:[0-9]+:{.*}$|s', $xv['v'])) ? unserialize($xv['v']) : $xv['v']); + $permcats[] = [ $xv['k'], $xv['k'], $value ]; } } } -- cgit v1.2.3 From 28f083323750e3083c5ba07f685d30b44e1d2482 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Wed, 8 Feb 2017 11:24:21 -0800 Subject: fix immediate issue with multiple login forms until I can figure out an elegant way to "popup" the modal login form already on the page. We still may need this fix for the actual login module which should always be callable and present a login form even if the nav is completely borked. --- Zotlabs/Lib/Permcat.php | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) (limited to 'Zotlabs/Lib/Permcat.php') diff --git a/Zotlabs/Lib/Permcat.php b/Zotlabs/Lib/Permcat.php index 032257be6..c697984f1 100644 --- a/Zotlabs/Lib/Permcat.php +++ b/Zotlabs/Lib/Permcat.php @@ -67,17 +67,11 @@ class Permcat { [ 'view_stream','view_profile','view_contacts','view_storage','view_pages','view_wiki', 'post_like' ] ], - [ 'contributor', t('contributor','permcat'), [ 'view_stream','view_profile','view_contacts','view_storage','view_pages','view_wiki', 'post_wall','post_comments','write_wiki','post_like','tag_deliver','chat' ] ], - [ 'trusted', t('trusted','permcat'), - [ 'view_stream','view_profile','view_contacts','view_storage','view_pages', - 'write_storage','post_wall','write_pages','write_wiki','post_comments','post_like','tag_deliver', - 'chat', 'republish' ] - ], - [ 'moderator', t('moderator','permcat'), + [ 'publisher', t('publisher','permcat'), [ 'view_stream','view_profile','view_contacts','view_storage','view_pages', 'write_storage','post_wall','write_pages','write_wiki','post_comments','post_like','tag_deliver', 'chat', 'republish' ] -- cgit v1.2.3 From 91819bfc2d475e1b16d3f5e9ca685ca2531a9084 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Wed, 8 Feb 2017 17:21:32 -0800 Subject: bringer - all basic functionality is implemented --- Zotlabs/Lib/Permcat.php | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'Zotlabs/Lib/Permcat.php') diff --git a/Zotlabs/Lib/Permcat.php b/Zotlabs/Lib/Permcat.php index c697984f1..7988aff97 100644 --- a/Zotlabs/Lib/Permcat.php +++ b/Zotlabs/Lib/Permcat.php @@ -28,7 +28,8 @@ class Permcat { $this->permcats[] = [ 'name' => $name, 'localname' => $localname, - 'perms' => Zaccess\Permissions::Operms($perms) + 'perms' => Zaccess\Permissions::Operms($perms), + 'system' => 1 ]; @@ -38,7 +39,8 @@ class Permcat { $this->permcats[] = [ 'name' => $p[$x][0], 'localname' => $p[$x][1], - 'perms' => Zaccess\Permissions::Operms(Zaccess\Permissions::FilledPerms($p[$x][2])) + 'perms' => Zaccess\Permissions::Operms(Zaccess\Permissions::FilledPerms($p[$x][2])), + 'system' => intval($p[$x][3]) ]; } } @@ -65,16 +67,16 @@ class Permcat { $permcats = [ [ 'follower', t('follower','permcat'), [ 'view_stream','view_profile','view_contacts','view_storage','view_pages','view_wiki', - 'post_like' ] + 'post_like' ], 1 ], [ 'contributor', t('contributor','permcat'), [ 'view_stream','view_profile','view_contacts','view_storage','view_pages','view_wiki', - 'post_wall','post_comments','write_wiki','post_like','tag_deliver','chat' ] + 'post_wall','post_comments','write_wiki','post_like','tag_deliver','chat' ], 1 ], [ 'publisher', t('publisher','permcat'), [ 'view_stream','view_profile','view_contacts','view_storage','view_pages', 'write_storage','post_wall','write_pages','write_wiki','post_comments','post_like','tag_deliver', - 'chat', 'republish' ] + 'chat', 'republish' ], 1 ] ]; @@ -85,7 +87,7 @@ class Permcat { if($x) { foreach($x as $xv) { $value = ((preg_match('|^a:[0-9]+:{.*}$|s', $xv['v'])) ? unserialize($xv['v']) : $xv['v']); - $permcats[] = [ $xv['k'], $xv['k'], $value ]; + $permcats[] = [ $xv['k'], $xv['k'], $value, 0 ]; } } } @@ -96,6 +98,14 @@ class Permcat { } + static public function find_permcat($arr,$name) { + if((! $arr) || (! $name)) + return false; + foreach($arr as $p) + if($p['name'] == $name) + return $p['value']; + } + static public function update($channel_id, $name,$permarr) { PConfig::Set($channel_id,'permcat',$name,$permarr); } -- cgit v1.2.3 From 1fb37f93ccf4739a6f92f3f36c1ee4ec8ef66a07 Mon Sep 17 00:00:00 2001 From: zotlabs Date: Thu, 9 Feb 2017 19:52:13 -0800 Subject: more permissions optimisations --- Zotlabs/Lib/Permcat.php | 52 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 40 insertions(+), 12 deletions(-) (limited to 'Zotlabs/Lib/Permcat.php') diff --git a/Zotlabs/Lib/Permcat.php b/Zotlabs/Lib/Permcat.php index 7988aff97..505ee2cfc 100644 --- a/Zotlabs/Lib/Permcat.php +++ b/Zotlabs/Lib/Permcat.php @@ -10,24 +10,52 @@ class Permcat { public function __construct($channel_id) { - $name = 'default'; - $localname = t('default','permcat'); - - $perms = Zaccess\Permissions::FilledAutoPerms($channel_id); - if(! $perms) { - $role = get_pconfig($channel_id,'system','permissions_role'); - if($role) { - $x = Zaccess\PermissionRoles::role_perms($role); + $perms = []; + + // first check role perms for a perms_connect setting + + $role = get_pconfig($channel_id,'system','permissions_role'); + if($role) { + $x = Zaccess\PermissionRoles::role_perms($role); + if($x['perms_connect']) { $perms = Zaccess\Permissions::FilledPerms($x['perms_connect']); } - if(! $perms) { - $perms = Zaccess\Permissions::FilledPerms([]); + } + + // if no role perms it may be a custom role, see if there any autoperms + + if(! $perms) { + $perms = Zaccess\Permissions::FilledAutoPerms($channel_id); + } + + // if no autoperms it may be a custom role with manual perms + + if(! $perms) { + $r = q("select channel_hash from channel where channel_id = %d", + intval($channel_id) + ); + if($r) { + $x = q("select * from abconfig where chan = %d and xchan = '%s' and cat = 'my_perms'", + intval($channel_id), + dbesc($r[0]['channel_hash']) + ); + if($x) { + foreach($x as $xv) { + $perms[$xv['k']] = intval($xv['v']); + } + } } } + // nothing was found - create a filled permission array where all permissions are 0 + + if(! $perms) { + $perms = Zaccess\Permissions::FilledPerms([]); + } + $this->permcats[] = [ - 'name' => $name, - 'localname' => $localname, + 'name' => 'default', + 'localname' => t('default','permcat'), 'perms' => Zaccess\Permissions::Operms($perms), 'system' => 1 ]; -- cgit v1.2.3