From 36c961a376280f452b14991d0fb24e9d946d2923 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 5 Nov 2013 11:46:05 +0100 Subject: [PATCH] Store the account type ("hydra" or "persona") explicitly in the database --- src/lib/Hydra/Controller/User.pm | 6 ++++-- src/lib/Hydra/Schema/Users.pm | 12 ++++++++++-- src/root/layout.tt | 4 ++-- src/root/topbar.tt | 2 +- src/root/user.tt | 4 ++-- src/sql/hydra.sql | 3 ++- src/sql/upgrade-25.sql | 1 + 7 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 src/sql/upgrade-25.sql diff --git a/src/lib/Hydra/Controller/User.pm b/src/lib/Hydra/Controller/User.pm index c6bc3768..64296dd2 100644 --- a/src/lib/Hydra/Controller/User.pm +++ b/src/lib/Hydra/Controller/User.pm @@ -91,6 +91,7 @@ sub persona_login :Path('/persona-login') Args(0) { { username => $email , password => "!" , emailaddress => $email, + , type => "persona" }); $user = $c->find_user({ username => $email }) or die; } @@ -163,6 +164,7 @@ sub register :Local Args(0) { , fullname => $fullName , password => "!" , emailaddress => "", + , type => "hydra" }); setPassword($user, $password); }); @@ -245,7 +247,7 @@ sub edit_POST { } if (($c->stash->{params}->{submit} // "") eq "reset-password") { - error($c, "This user's password cannot be reset.") if $user->password eq "!"; + error($c, "This user's password cannot be reset.") if $user->type ne "hydra"; $c->stash->{json} = {}; error($c, "No email address is set for this user.") unless $user->emailaddress; @@ -274,7 +276,7 @@ sub edit_POST { }); my $password = $c->stash->{params}->{password} // ""; - if ($user->password ne "!" && $password ne "") { + if ($user->type eq "hydra" && $password ne "") { error($c, "You must specify a password of at least 6 characters.") unless isValidPassword($password); error($c, "The passwords you specified did not match.") diff --git a/src/lib/Hydra/Schema/Users.pm b/src/lib/Hydra/Schema/Users.pm index 245f44ee..a16370d3 100644 --- a/src/lib/Hydra/Schema/Users.pm +++ b/src/lib/Hydra/Schema/Users.pm @@ -61,6 +61,12 @@ __PACKAGE__->table("Users"); default_value: 0 is_nullable: 0 +=head2 type + + data_type: 'text' + default_value: 'hydra' + is_nullable: 0 + =cut __PACKAGE__->add_columns( @@ -74,6 +80,8 @@ __PACKAGE__->add_columns( { data_type => "text", is_nullable => 0 }, "emailonerror", { data_type => "integer", default_value => 0, is_nullable => 0 }, + "type", + { data_type => "text", default_value => "hydra", is_nullable => 0 }, ); =head1 PRIMARY KEY @@ -176,8 +184,8 @@ Composing rels: L -> project __PACKAGE__->many_to_many("projects", "projectmembers", "project"); -# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-10-14 15:46:29 -# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Hv9Ukqud0d3uIUot0ErKeg +# Created by DBIx::Class::Schema::Loader v0.07033 @ 2013-11-05 10:22:03 +# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:Gd8KwFcnVShZ/WihvwfgQw my %hint = ( columns => [ diff --git a/src/root/layout.tt b/src/root/layout.tt index cc1f4ebf..70236b17 100644 --- a/src/root/layout.tt +++ b/src/root/layout.tt @@ -96,7 +96,7 @@ Hydra [% HTML.escape(version) %] (using [% HTML.escape(nixVersion) %]). [% IF c.user_exists %] - You are signed in as [% HTML.escape(c.user.username) %]. + You are signed in as [% HTML.escape(c.user.username) %][% IF c.user.type == 'persona' %] via Persona[% END %]. [% END %] @@ -113,7 +113,7 @@ } - [% IF c.user_exists && c.user.password != '!' %] + [% IF c.user_exists && c.user.type == 'hydra' %] diff --git a/src/root/topbar.tt b/src/root/topbar.tt index 097fd0c6..a5f7c3c1 100644 --- a/src/root/topbar.tt +++ b/src/root/topbar.tt @@ -128,7 +128,7 @@
  • - Sign in with a Hydra user name + Sign in with a Hydra account
  • [% END %] [% END %] diff --git a/src/root/user.tt b/src/root/user.tt index 781500aa..614c79c5 100644 --- a/src/root/user.tt +++ b/src/root/user.tt @@ -34,7 +34,7 @@ - [% IF !create && user.password != '!' %] + [% IF !create && user.type == 'hydra' %]
    @@ -101,7 +101,7 @@ [%IF create %]Create[% ELSE %]Apply changes[% END %] - [% IF !create && c.check_user_roles('admin') && user.password != '!' %] + [% IF !create && c.check_user_roles('admin') && user.type == 'hydra' %]