diff --git a/VERSION b/VERSION index a3df0a6959e154733da89a5d6063742ce6d5b851..ac39a106c48515b621e90c028ed94c6f71bc03fa 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.8.0 +0.9.0 diff --git a/lib/SeMeet/Controller/Auth.pm b/lib/SeMeet/Controller/Auth.pm index fa7f1d665878bba8fbf22e36aa389e35496fa50a..e0dbf8784608db133fd7db1784f3fbd6d4930470 100644 --- a/lib/SeMeet/Controller/Auth.pm +++ b/lib/SeMeet/Controller/Auth.pm @@ -31,8 +31,15 @@ sub callback ($c) { my @groups = (); my $permissions = {}; + foreach my $permission ( @{ $user->permissions || [] } ) { + $permissions->{$permission} = 1; + } + my $groups = $c->schema->resultset('Group')->search( - { octid => { '-in' => $octopus_user->{groups} }}, + { + deleted => undef, + octid => { '-in' => $octopus_user->{groups} }, + }, { columns => ['id', 'permissions'] } ); diff --git a/lib/SeMeet/Controller/Groups.pm b/lib/SeMeet/Controller/Groups.pm index a98755dc84eecc3f0acaa45a127dbb686385ad44..505b8e60830ce5ce958a13222b6f05c9cf88b4f7 100644 --- a/lib/SeMeet/Controller/Groups.pm +++ b/lib/SeMeet/Controller/Groups.pm @@ -6,7 +6,8 @@ sub list($c) { my $args = $c->validation->output; my $groups = $c->schema->resultset('Group')->search({ - name => { ilike => '%' . $args->{search} . '%' } + name => { ilike => '%' . $args->{search} . '%' }, + deleted => undef, }, { order_by => 'name', diff --git a/lib/SeMeet/Schema/Result/Group.pm b/lib/SeMeet/Schema/Result/Group.pm index 23af7d48081f0e73b44001b0c62ae93106de5643..17bb0d0e1d8c354bd354cb6fdbfe93708c4819b2 100644 --- a/lib/SeMeet/Schema/Result/Group.pm +++ b/lib/SeMeet/Schema/Result/Group.pm @@ -17,6 +17,7 @@ __PACKAGE__->add_columns( sequence => 'uid_seq' }, qw( + deleted octid name permissions diff --git a/lib/SeMeet/Schema/Result/User.pm b/lib/SeMeet/Schema/Result/User.pm index e630aeb4e4ff6a4385b9da5e6c2a886520ba21e2..288b4c144e383b1159989e0ad38c37cefa0970fa 100644 --- a/lib/SeMeet/Schema/Result/User.pm +++ b/lib/SeMeet/Schema/Result/User.pm @@ -25,6 +25,7 @@ __PACKAGE__->add_columns( uuid username displayname + permissions ), ); @@ -43,6 +44,12 @@ __PACKAGE__->has_many( { 'foreign.owner_id' => 'self.id', }, ); +__PACKAGE__->inflate_column('permissions', { + inflate => sub { + return [ split /\W+/, shift ]; + }, +}); + sub api_token { my $self = shift; my $args = shift; diff --git a/script/sync_octopus_groups b/script/sync_octopus_groups index f018fecd504cdf3c6b9ea9349ef8d9f3a0327602..3a309edb38319ad119a774c8bb60596f7e01e3a2 100755 --- a/script/sync_octopus_groups +++ b/script/sync_octopus_groups @@ -47,7 +47,9 @@ foreach my $group ( @{ $octopus_groups } ) { } # Cleanup -$schema->resultset('Group')->search({octid => {-not_in => \@exists}})->delete; +$schema->resultset('Group')->search({octid => {-not_in => \@exists}})->update({ + deleted => \'now()' +}); # Update cache my $meets = $schema->resultset('Meet')->search({deleted => undef}); diff --git a/sql/migrations.sql b/sql/migrations.sql index 968a2e3ffec89bce5fe097fc84f146284f2ba7a5..665c8f02a3aa56ddf9f5e8916eee5ca3ae8fcd53 100644 --- a/sql/migrations.sql +++ b/sql/migrations.sql @@ -84,3 +84,9 @@ join "users" on ("users"."id" = "meets_users"."user_id") -- 6 up drop table "moderators"; alter table "users" drop column "octid"; + +-- 7 up +alter table "users" add column "permissions" text; + +-- 8 up +alter table "groups" add column "deleted" timestamp(0);