return 1;
}
+sub generate_password_reset_token {
+ my ($self, $uid) = @_;
+ my $users = $self->app->model('users');
+
+ # generate new token
+ my $token = $users->passwords->generate_random_password;
+ my $hashed_token = $users->passwords->encrypt_password($token);
+
+ my $rs = $users->update(uid => $uid,
+ newpasswd => $hashed_token,
+ newpasswd_ts => { function => "NOW()" });
+ if (!$rs) {
+ $self->last_error($users->last_error);
+ return;
+ }
+
+ return $token;
+}
+
+sub generate_email_change_token {
+ my ($self, $uid, $email) = @_;
+ my $users = $self->app->model('users');
+
+ # generate new token
+ my $token = $users->passwords->generate_random_password;
+ my $hashed_token = $users->passwords->encrypt_password($token);
+
+ # insert token into users_param
+ $users->param->start_transaction;
+ my $rs = $users->param->set(uid => $uid,
+ name => "new_email_token",
+ value => $hashed_token);
+ if (!defined $rs) {
+ # error !
+ $self->last_error($users->param->last_error);
+ $users->param->rollback;
+ return;
+ }
+
+ # insert token_ts intro users_param
+ $rs = $users->param->set(uid => $uid,
+ name => "new_email_token_ts",
+ value => {function => "NOW()"});
+ if (!defined $rs) {
+ # error !
+ $self->last_error($users->param->last_error);
+ $users->param->rollback;
+ return;
+ }
+ $users->param->commit;
+
+ return $token;
+}
+
+
sub cancel_activation {
my ($self, $user) = @_;
if (!$user || $user->{uid}) {