/
Admin.pm
96 lines (78 loc) · 2.03 KB
/
Admin.pm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package Galileo::Admin;
use Mojo::Base 'Mojolicious::Controller';
use Mojo::JSON 'j';
sub users { shift->render }
sub pages { shift->render }
sub user { shift->render }
sub store_user {
my $self = shift;
$self->on( text => sub {
my ($self, $message) = @_;
my $data = j($message);
my $pass1 = delete $data->{pass1};
my $pass2 = delete $data->{pass2};
if ( $pass1 or $pass2 ) {
unless ( $pass1 eq $pass2 ) {
$self->send({ text => j({
message => 'Not saved! Passwords do not match',
success => \0,
}) });
return 0;
}
$data->{password} = $pass1;
}
my $rs = $self->schema->resultset('User');
unless ( $rs->single({ name => $data->{name} }) or $data->{password}) {
$self->send({ text => j({
message => 'Cannot create user without a password',
success => \0,
}) });
return 0;
}
$data->{$_} = $data->{$_} ? 1 : 0 for ( qw/is_author is_admin/ );
$rs->update_or_create(
$data, {key => 'users_name'},
);
$self->send({ text => j({
message => 'Changes saved',
success => \1,
}) });
});
}
sub remove_page {
my $self = shift;
$self->on( text => sub {
my ($self, $message) = @_;
my $id = j($message)->{id};
if ($id == 1) {
$self->send({ text => j({
success => \0,
message => 'Cannot remove home page',
}) });
return;
}
my $page = $self->schema->resultset('Page')->single({ page_id => $id });
unless ( $page ) {
$self->send({ text => j({
success => \0,
message => "Could not access page (id $id)",
}) });
return;
}
my $affected = $page->delete;
#TODO remove page from nav menu if present
unless ( $affected ) {
$self->send({ text => j({
success => \0,
message => 'Database reports failure on deleting page',
}) });
return;
}
$self->send({ text => j({
success => \1,
message => 'Page removed',
}) });
return;
});
}
1;