gitprep / templates / auto / _start.html.ep /
b51214a 7 years ago
1 contributor
103 lines | 2.799kb
<%
  # 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">&times;</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 btn-new" style="margin-top:20px">Create Admin User</button>
        </div>
      </div>
    </form>
  </div>

  %= include '/include/footer';