Mojolicious-Command-generate-bootstrap_app
view release on metacpan or search on metacpan
lib/Mojolicious/Command/generate/bootstrap_app.pm view on Meta::CPAN
my $self = shift;
my $record = {};
if ($self->_validate_form){
$record->{login} = $self->_trim($self->param('login'));
$record->{email} = $self->_trim($self->param('email'));
$record->{password} = $self->_encrypt_password($self->param('password'));
$record->{admin} = $self->param('admin') ? 1 : 0;
try {
$self->model('User')->create($record);
}
catch {
$self->flash(class => 'alert alert-danger', message => $_);
$self->redirect_to($self->req->headers->referrer);
};
$self->redirect_to('/users/list');
}
else {
$self->redirect_to($self->req->headers->referrer);
}
}
sub delete {
my $self = shift;
my $user = $self->model('User')->find( $self->stash('id') );
my $login = $user->login;
if ($user->id != $self->session->{user}->{id}){
$user->delete;
$self->flash( class => 'alert alert-info', message => "$login deleted." );
}
else {
$self->flash( class => 'alert alert-danger', message => "You can not delete $login." );
}
$self->redirect_to('/users/list');
}
sub edit {
my $self = shift;
if (defined $self->stash('id')) {
my $user = $self->model('User')->find($self->stash('id'));
if ($user->id == $self->session->{user}->{id} || $self->session->{user}->{admin}) {
$self->render( user => $user );
}
else {
$self->flash( class => 'alert alert-danger', message => 'Not authorized.' );
$self->redirect_to($self->req->headers->referrer);
}
}
else {
$self->flash( class => 'alert alert-danger', message => 'No user given.' );
$self->redirect_to($self->req->headers->referrer);
}
}
sub update {
my $self = shift;
my $record = {};
if ($self->_validate_form){
$record->{login} = $self->_trim($self->param('login'));
$record->{email} = $self->_trim($self->param('email'));
$record->{password} = $self->_encrypt_password($self->param('password'));
$record->{admin} = $self->param('admin') ? 1 : 0;
if (defined $self->param('id')) {
my $user = $self->model('User')->find($self->param('id'));
if ($user->id == $self->session->{user}->{id} || $self->session->{user}->{admin}) {
$record->{id} = $self->param('id');
try {
$self->model('User')->update_or_create($record);
$self->flash(class => 'alert alert-notice', message => 'Updated ' . $user->login);
}
catch {
$self->flash(class => 'alert alert-danger', message => $_);
};
$self->redirect_to($self->session->{user}->{admin} ? '/users/list' : '/');
}
}
else {
$self->flash(class => 'alert alert-danger', message => 'No user given.');
$self->redirect_to($self->session->{user}->{admin} ? '/users/list' : '/');
}
}
else {
$self->redirect_to($self->req->headers->referrer);
}
}
sub _trim {
my ($self, $string) = @_;
$string =~ s/^\s*(.*)\s*$/$1/gmx if defined $string;
return $string
}
sub _validate_form {
my $self = shift;
if ($self->_trim($self->param('login')) !~ /[a-zA-Z]{3,10}/){
$self->flash(class => 'alert alert-danger', message => $self->param('login') . ' does not match /[a-zA-Z]{3,10}/');
return 0;
}
elsif ($self->param('password') ne $self->param('password_verify')){
$self->flash(class => 'alert alert-danger', message => 'Passwords do not match.');
return 0;
}
elsif ($self->param('password') eq ''){
$self->flash(class => 'alert alert-danger', message => 'Password is empty.');
return 0;
}
elsif (!Email::Valid->address($self->_trim($self->param('email')))){
$self->flash(class => 'alert alert-danger', message => 'You have to provide a valid email address.');
return 0;
}
( run in 0.644 second using v1.01-cache-2.11-cpan-39bf76dae61 )