My-Mailserver-Manager/lib/My/Mailserver/Controller/Dashboard.pm

60 lines
1.7 KiB
Perl

package My::Mailserver::Controller::Dashboard;
use Mojo::Base 'Mojolicious::Controller';
sub index {
my $c = shift;
$c->stash->{domain} = $c->current_user->domain;
$c->stash->{aliases} = $c->schema->resultset('VirtualAlias')->search(
{ destination => $c->current_user->email },
{ order_by => 'source' }
);
$c->stash->{recovery_email} = $c->current_user->recovery_email;
}
sub change_password {
my $c = shift;
my $v = $c->validation;
$v->csrf_protect;
$v->required('current_password');
$v->required('new_password');
$v->required('confirm_password');
if ($v->is_valid) {
if ($c->current_user->check_password($v->param('current_password'))) {
if ($v->param('new_password') eq $v->param('confirm_password')) {
$c->current_user->password($v->param('new_password'));
$c->current_user->update;
$c->flash(success => 'Password changed successfully');
} else {
$c->flash(error => 'New and Confirm password must match');
}
} else {
$c->flash(error => 'Current password incorrect');
}
} else {
$c->app->log->debug('invalid form');
$c->flash(error => 'All form fields required');
}
$c->redirect_to('/dashboard');
}
sub change_recovery {
my $c = shift;
my $v = $c->validation;
$v->csrf_protect;
$v->required('recovery_email');
if ($v->is_valid) {
$c->current_user->recovery_email($v->param('recovery_email'));
$c->current_user->update;
$c->flash(success => 'Recovery email changed successfully');
} else {
$c->flash(error => 'Failed to change recovery email');
}
$c->redirect_to('/dashboard');
}
1;