1 contributor
<%
# API
my $api = gitprep_api;
my $admin_user = app->manager->admin_user;
if (defined $admin_user && $admin_user ne '') {
$self->redirect_to('/');
return;
}
# Operator
my $op = param('op') || '';
my $errors;
if ($op eq 'create') {
# Parameters
my $password = param('password');
my $password2 = param('password2');
# Validator
my $vc = app->vc;
# Validation
my $validation = $vc->validation;
# "user"
if (defined $admin_user) {
$validation->add_failed('Admin user already exists.');
}
# "password"
if (!(defined $password && length $password)) {
$validation->add_failed('Password is empty.');
}
elsif (!$vc->check($password, 'ascii_graphic')) {
$validation->add_failed("Password contains invalid character.");
}
elsif ($password ne $password2) {
$validation->add_failed("Two password don't match.");
}
if ($validation->is_valid) {
# Valida parameters
my $new_user = {};
$new_user->{id} = 'admin';
$new_user->{admin} = 1;
my ($password_encryped, $salt) = $api->encrypt_password($password);
$new_user->{password} = $password_encryped;
$new_user->{salt} = $salt;
$new_user->{email} = '';
# Create admin user
$self->app->dbi->model('user')->insert($new_user);
# Redirect
$self->flash(admin_user_created => 1);
$self->redirect_to('/_login');
return;
}
else { $errors = $validation->messages }
}
layout 'common', title => 'Start page';
%>
%= include '/include/header';
<!-- Start page -->
<div class="container">
% if ($errors) {
<div class="alert alert-error">
<button type="button" class="close" data-dismiss="alert">×</button>
% for my $error (@$errors) {
<div><%= $error %></div>
% }
</div>
% }
<div class="topic1" style="text-align:center"><h3>Create Admin User</h3></div>
<form class="user-form" action="<%= url_for->query(op => 'create') %>" method="post">
<div class="user-form-container">
<div>
<div>User name</div>
<div style="margin-bottom:10px;">
<b>admin</b>
</div>
</div>
<div>
<div>Password</div>
<div>
<%= password_field 'password', id => 'input-password', placeholder => 'Password' %>
<%= password_field 'password2', id => 'input-password', placeholder => 'Password Again' %>
</div>
</div>
<div>
<button type="submit" class="btn btn-green" style="margin-top:20px">Create Admin User</button>
</div>
</div>
</form>
</div>
%= include '/include/footer';