my $password = $userinfo->{password};
my $role = $userinfo->{role} || 'user';
+ if ($userinfo->{sub}) {
+ $username = $userinfo->{sub};
+ }
+
throw( "No username given" ) unless $username;
throw( "Invalid password - must be at least " . $self->MIN_PASS_LEN
. " characters long" )
- unless ( $self->validate_password($password) || $username =~ /^https?:/ );
+ unless ( $self->validate_password($password) || $username =~ /^https?:/ || exists ($userinfo->{openid_id}) || exists ($userinfo->{sub}));
my $user = Text::Tradition::User->new(
id => $username,
my $sub = $userinfo->{sub};
my $openid = $userinfo->{openid_id};
+ my $email = $userinfo->{email};
# Do we have a user with the google id already?
});
if (!$user) {
- throw ("Could not find a user with that openid or sub!");
+ return undef;
}
my $new_user = $self->add_user({
- username => $sub,
- password => $user->password,
- role => $user->role,
- active => $user->active,
+ username => $sub,
+ password => $user->password,
+ role => $user->role,
+ active => $user->active,
+ sub => $sub,
+ openid_id => $openid,
+ email => $email,
});
foreach my $t (@{ $user->traditions }) {
$new_user->add_tradition($t);
}
- $self->delete_user({ username => $user->id });
+ # $self->delete_user({ username => $user->id });
return $new_user;
}