cleanup
|
1 |
package Gitprep::API; |
2 |
use Mojo::Base -base; |
|
3 | ||
improved password encrypt sy...
|
4 |
use Digest::MD5 'md5_hex'; |
cleanup
|
5 | |
6 |
has 'cntl'; |
|
7 | ||
fix project page
|
8 |
sub get_user_row_id { |
9 |
my ($self, $user_id) = @_; |
|
10 |
|
|
11 |
my $user_row_id = $self->app->dbi->model('user')->select('row_id', where => {id => $user_id})->value; |
|
12 |
|
|
13 |
return $user_row_id; |
|
14 |
} |
|
15 | ||
16 |
sub get_project_row_id { |
|
17 |
my ($self, $user_id, $project_id) = @_; |
|
18 |
|
|
19 |
my $user_row_id = $self->app->dbi->model('user')->select('row_id', where => {id => $user_id})->value; |
|
20 |
my $project_row_id = $self->app->dbi->model('project')->model('project')->select( |
|
21 |
'row_id', |
|
22 |
where => {user => $user_row_id, id => $project_id} |
|
23 |
)->value; |
|
24 |
|
|
25 |
return $project_row_id; |
|
26 |
} |
|
27 | ||
changed database column info...
|
28 |
sub app { shift->cntl->app } |
29 | ||
improved password encrypt sy...
|
30 |
sub encrypt_password { |
31 |
my ($self, $password) = @_; |
|
32 |
|
|
33 |
my $salt; |
|
34 |
$salt .= int(rand 10) for (1 .. 40); |
|
35 |
my $password_encryped = md5_hex md5_hex "$salt$password"; |
|
36 |
|
|
37 |
return ($password_encryped, $salt); |
|
38 |
} |
|
39 | ||
40 |
sub check_password { |
|
fixed bug that password chec...
|
41 |
my ($self, $password, $salt, $password_encrypted) = @_; |
improved password encrypt sy...
|
42 |
|
added admin page tests
|
43 |
return unless defined $password && $salt && $password_encrypted; |
44 |
|
|
fixed bug that password chec...
|
45 |
return md5_hex(md5_hex "$salt$password") eq $password_encrypted; |
improved password encrypt sy...
|
46 |
} |
47 | ||
cleanup
|
48 |
sub check_user_and_password { |
49 |
my ($self, $user, $password) = @_; |
|
50 |
|
|
51 |
my $row |
|
52 |
= $self->app->dbi->model('user')->select(['password', 'salt'], id => $user)->one; |
|
53 |
|
|
54 |
return unless $row; |
|
55 |
|
|
56 |
my $is_valid = $self->check_password( |
|
57 |
$password, |
|
58 |
$row->{salt}, |
|
59 |
$row->{password} |
|
60 |
); |
|
61 |
|
|
62 |
return $is_valid; |
|
63 |
} |
|
64 | ||
complete collaborator featur...
|
65 |
sub is_collaborator { |
fix session
|
66 |
my ($self, $user_id, $project_id, $collaborator_id) = @_; |
67 |
|
|
68 |
my $user_row_id = $self->get_user_row_id($user_id); |
|
69 |
my $project_row_id = $self->app->dbi->model('project')->select( |
|
70 |
where => {user => $user_row_id, id => $project_id} |
|
71 |
)->value; |
|
72 |
my $collaborator_row_id = $self->get_user_row_id($collaborator_id); |
|
complete collaborator featur...
|
73 |
|
74 |
my $row = $self->app->dbi->model('collaboration')->select( |
|
fix session
|
75 |
where => {project => $project_row_id, collaborator => $collaborator_row_id} |
complete collaborator featur...
|
76 |
)->one; |
77 |
|
|
78 |
return $row ? 1 : 0; |
|
79 |
} |
|
80 | ||
81 |
sub can_access_private_project { |
|
fix session
|
82 |
my ($self, $user_id, $project_id) = @_; |
complete collaborator featur...
|
83 | |
fix session
|
84 |
my $session_user_row_id = $self->cntl->session('user_row_id'); |
85 |
my $session_user_id = $self->app->dbi->model('user')->select( |
|
86 |
'id', where => {row_id => $session_user_row_id} |
|
87 |
)->value; |
|
complete collaborator featur...
|
88 |
|
89 |
my $is_valid = |
|
fix session
|
90 |
($user_id eq $session_user_id || $self->is_collaborator($user_id, $project_id, $session_user_id)) |
complete collaborator featur...
|
91 |
&& $self->logined; |
92 |
|
|
93 |
return $is_valid; |
|
94 |
} |
|
95 | ||
cleanup
|
96 |
sub new { |
97 |
my ($class, $cntl) = @_; |
|
98 | ||
99 |
my $self = $class->SUPER::new(cntl => $cntl); |
|
100 |
|
|
101 |
return $self; |
|
102 |
} |
|
103 | ||
added user delete feature
|
104 |
sub logined_admin { |
105 |
my $self = shift; |
|
106 | ||
107 |
# Controler |
|
108 |
my $c = $self->cntl; |
|
109 |
|
|
110 |
# Check logined as admin |
|
fix session
|
111 |
my $session_user_id = $self->session_user_id; |
112 |
|
|
113 |
return $self->app->manager->is_admin($session_user_id) && $self->logined($session_user_id); |
|
114 |
} |
|
115 | ||
116 |
sub session_user_id { |
|
117 |
my $self = shift; |
|
118 |
|
|
119 |
my $session_user_row_id = $self->cntl->session('user_row_id'); |
|
120 |
my $session_user_id = $self->app->dbi->model('user')->select( |
|
121 |
'id', where => {row_id => $session_user_row_id} |
|
122 |
)->value; |
|
added user delete feature
|
123 |
|
fix session
|
124 |
return $session_user_id; |
added user delete feature
|
125 |
} |
126 | ||
little more secure login
|
127 |
sub logined { |
fix session
|
128 |
my ($self, $user_id) = @_; |
little more secure login
|
129 |
|
130 |
my $c = $self->cntl; |
|
131 |
my $dbi = $c->app->dbi; |
|
132 |
|
|
fix session
|
133 |
my $session_user_row_id = $c->session('user_row_id'); |
134 |
my $session_user_id = $self->session_user_id; |
|
added reset password feature
|
135 |
my $password = $c->session('password'); |
cleanup login page
|
136 |
return unless defined $password; |
little more secure login
|
137 |
|
fix session
|
138 |
my $correct_password = $dbi->model('user')->select( |
139 |
'password', |
|
140 |
where => {row_id => $session_user_row_id} |
|
141 |
)->value; |
|
changed database column info...
|
142 |
return unless defined $correct_password; |
little more secure login
|
143 |
|
added branch deleting featur...
|
144 |
my $logined; |
fix session
|
145 |
if (defined $user_id) { |
146 |
$logined = $user_id eq $session_user_id && $password eq $correct_password; |
|
added branch deleting featur...
|
147 |
} |
148 |
else { |
|
149 |
$logined = $password eq $correct_password |
|
150 |
} |
|
151 |
|
|
152 |
return $logined; |
|
little more secure login
|
153 |
} |
154 | ||
added form to create reposit...
|
155 |
sub params { |
156 |
my $self = shift; |
|
157 |
|
|
158 |
my $c = $self->cntl; |
|
159 |
|
|
fix branch not deleted bug a...
|
160 |
my %params; |
161 |
for my $name ($c->param) { |
|
162 |
my @values = $c->param($name); |
|
163 |
if (@values > 1) { |
|
164 |
$params{$name} = \@values; |
|
165 |
} |
|
166 |
elsif (@values) { |
|
167 |
$params{$name} = $values[0]; |
|
168 |
} |
|
169 |
} |
|
added form to create reposit...
|
170 |
|
171 |
return \%params; |
|
172 |
} |
|
173 | ||
cleanup
|
174 |
1; |
175 |