Newer Older
175 lines | 3.988kb
cleanup
Yuki Kimoto authored on 2012-11-28
1
package Gitprep::API;
2
use Mojo::Base -base;
3

            
improved password encrypt sy...
Yuki Kimoto authored on 2013-04-09
4
use Digest::MD5 'md5_hex';
cleanup
Yuki Kimoto authored on 2012-11-28
5

            
6
has 'cntl';
7

            
fix project page
Yuki Kimoto authored on 2016-04-21
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...
Yuki Kimoto authored on 2013-04-17
28
sub app { shift->cntl->app }
29

            
improved password encrypt sy...
Yuki Kimoto authored on 2013-04-09
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...
Yuki Kimoto authored on 2013-04-12
41
  my ($self, $password, $salt, $password_encrypted) = @_;
improved password encrypt sy...
Yuki Kimoto authored on 2013-04-09
42
  
added admin page tests
Yuki Kimoto authored on 2013-05-16
43
  return unless defined $password && $salt && $password_encrypted;
44
  
fixed bug that password chec...
Yuki Kimoto authored on 2013-04-12
45
  return md5_hex(md5_hex "$salt$password") eq $password_encrypted;
improved password encrypt sy...
Yuki Kimoto authored on 2013-04-09
46
}
47

            
cleanup
Yuki Kimoto authored on 2013-11-16
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...
Yuki Kimoto authored on 2013-11-17
65
sub is_collaborator {
fix session
Yuki Kimoto authored on 2016-04-21
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...
Yuki Kimoto authored on 2013-11-17
73
  
74
  my $row = $self->app->dbi->model('collaboration')->select(
fix session
Yuki Kimoto authored on 2016-04-21
75
    where => {project => $project_row_id, collaborator => $collaborator_row_id}
complete collaborator featur...
Yuki Kimoto authored on 2013-11-17
76
  )->one;
77
  
78
  return $row ? 1 : 0;
79
}
80

            
81
sub can_access_private_project {
fix session
Yuki Kimoto authored on 2016-04-21
82
  my ($self, $user_id, $project_id) = @_;
complete collaborator featur...
Yuki Kimoto authored on 2013-11-17
83

            
fix session
Yuki Kimoto authored on 2016-04-21
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...
Yuki Kimoto authored on 2013-11-17
88
  
89
  my $is_valid =
fix session
Yuki Kimoto authored on 2016-04-21
90
    ($user_id eq $session_user_id || $self->is_collaborator($user_id, $project_id, $session_user_id))
complete collaborator featur...
Yuki Kimoto authored on 2013-11-17
91
    && $self->logined;
92
  
93
  return $is_valid;
94
}
95

            
cleanup
Yuki Kimoto authored on 2012-11-28
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
Yuki Kimoto authored on 2013-04-09
104
sub logined_admin {
105
  my $self = shift;
106

            
107
  # Controler
108
  my $c = $self->cntl;
109
  
110
  # Check logined as admin
fix session
Yuki Kimoto authored on 2016-04-21
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
Yuki Kimoto authored on 2013-04-09
123
  
fix session
Yuki Kimoto authored on 2016-04-21
124
  return $session_user_id;
added user delete feature
Yuki Kimoto authored on 2013-04-09
125
}
126

            
little more secure login
Yuki Kimoto authored on 2013-03-16
127
sub logined {
fix session
Yuki Kimoto authored on 2016-04-21
128
  my ($self, $user_id) = @_;
little more secure login
Yuki Kimoto authored on 2013-03-16
129
  
130
  my $c = $self->cntl;
131
  my $dbi = $c->app->dbi;
132
  
fix session
Yuki Kimoto authored on 2016-04-21
133
  my $session_user_row_id = $c->session('user_row_id');
134
  my $session_user_id = $self->session_user_id;
added reset password feature
Yuki Kimoto authored on 2013-04-10
135
  my $password = $c->session('password');
cleanup login page
Yuki Kimoto authored on 2013-03-16
136
  return unless defined $password;
little more secure login
Yuki Kimoto authored on 2013-03-16
137
  
fix session
Yuki Kimoto authored on 2016-04-21
138
  my $correct_password = $dbi->model('user')->select(
139
    'password',
140
    where => {row_id => $session_user_row_id}
141
  )->value;
changed database column info...
Yuki Kimoto authored on 2013-04-17
142
  return unless defined $correct_password;
little more secure login
Yuki Kimoto authored on 2013-03-16
143
  
added branch deleting featur...
Yuki Kimoto authored on 2013-05-05
144
  my $logined;
fix session
Yuki Kimoto authored on 2016-04-21
145
  if (defined $user_id) {
146
    $logined = $user_id eq $session_user_id && $password eq $correct_password;
added branch deleting featur...
Yuki Kimoto authored on 2013-05-05
147
  }
148
  else {
149
    $logined = $password eq $correct_password
150
  }
151
  
152
  return $logined;
little more secure login
Yuki Kimoto authored on 2013-03-16
153
}
154

            
added form to create reposit...
Yuki Kimoto authored on 2013-03-18
155
sub params {
156
  my $self = shift;
157
  
158
  my $c = $self->cntl;
159
  
fix branch not deleted bug a...
Yuki Kimoto authored on 2013-05-29
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...
Yuki Kimoto authored on 2013-03-18
170
  
171
  return \%params;
172
}
173

            
cleanup
Yuki Kimoto authored on 2012-11-28
174
1;
175