From ba775f4e73a4a5bbfa20f4cd0c2b3644ca8479ac Mon Sep 17 00:00:00 2001 From: Martin Lensment Date: Tue, 30 Sep 2014 14:27:37 +0300 Subject: [PATCH] Add form to epp users --- app/controllers/admin/epp_users_controller.rb | 58 +++++++++++++++++++ app/models/epp_user.rb | 10 ++++ app/views/admin/epp_users/_form.haml | 40 +++++++++++++ app/views/admin/epp_users/edit.haml | 9 +++ app/views/admin/epp_users/index.haml | 28 +++++++++ app/views/admin/epp_users/new.haml | 3 + app/views/admin/epp_users/show.haml | 40 +++++++++++++ app/views/layouts/application.haml | 2 +- config/locales/en.yml | 8 ++- config/routes.rb | 1 + 10 files changed, 196 insertions(+), 3 deletions(-) create mode 100644 app/controllers/admin/epp_users_controller.rb create mode 100644 app/views/admin/epp_users/_form.haml create mode 100644 app/views/admin/epp_users/edit.haml create mode 100644 app/views/admin/epp_users/index.haml create mode 100644 app/views/admin/epp_users/new.haml create mode 100644 app/views/admin/epp_users/show.haml diff --git a/app/controllers/admin/epp_users_controller.rb b/app/controllers/admin/epp_users_controller.rb new file mode 100644 index 000000000..c2d68d7f0 --- /dev/null +++ b/app/controllers/admin/epp_users_controller.rb @@ -0,0 +1,58 @@ +class Admin::EppUsersController < AdminController + before_action :set_epp_user, only: [:show, :edit, :update, :destroy] + + def index + @q = EppUser.search(params[:q]) + @epp_users = @q.result.page(params[:page]) + end + + def new + @epp_user = EppUser.new + end + + def create + @epp_user = EppUser.new(epp_user_params) + + if @epp_user.save + flash[:notice] = I18n.t('shared.record_created') + redirect_to [:admin, @epp_user] + else + flash.now[:alert] = I18n.t('shared.failed_to_create_record') + render 'new' + end + end + + def show; end + + def edit; end + + def update + if @epp_user.update(epp_user_params) + flash[:notice] = I18n.t('shared.record_updated') + redirect_to [:admin, @epp_user] + else + flash.now[:alert] = I18n.t('shared.failed_to_update_record') + render 'edit' + end + end + + def destroy + if @epp_user.destroy + flash[:notice] = I18n.t('shared.record_deleted') + redirect_to admin_epp_users_path + else + flash.now[:alert] = I18n.t('shared.failed_to_delete_record') + render 'show' + end + end + + private + + def set_epp_user + @epp_user = EppUser.find(params[:id]) + end + + def epp_user_params + params.require(:epp_user).permit(:username, :password, :crt, :active, :registrar_id, :registrar_typeahead) + end +end diff --git a/app/models/epp_user.rb b/app/models/epp_user.rb index 9280a2ce2..2def5f90a 100644 --- a/app/models/epp_user.rb +++ b/app/models/epp_user.rb @@ -2,4 +2,14 @@ class EppUser < ActiveRecord::Base # TODO should have max request limit per day belongs_to :registrar has_many :contacts + + attr_accessor :registrar_typeahead + + def registrar_typeahead + @registrar_typeahead || registrar || nil + end + + def to_s + username + end end diff --git a/app/views/admin/epp_users/_form.haml b/app/views/admin/epp_users/_form.haml new file mode 100644 index 000000000..46a75c01e --- /dev/null +++ b/app/views/admin/epp_users/_form.haml @@ -0,0 +1,40 @@ += form_for([:admin, @epp_user]) do |f| + - if @epp_user.errors.any? + - @epp_user.errors.each do |attr, err| + = err + %br + - if @epp_user.errors.any? + %hr + + .row + .col-md-6 + .form-group + = f.label :username + = f.text_field(:username, class: 'form-control') + .form-group + = f.label :password + = f.text_field(:password, class: 'form-control') + .form-group + .form-group.has-feedback.js-typeahead-container + = f.label :registrar_typeahead + = f.text_field(:registrar_typeahead, class: 'form-control js-registrar-typeahead', placeholder: t('shared.registrar'), autocomplete: 'off') + %span.glyphicon.glyphicon-ok.form-control-feedback.js-typeahead-ok.hidden + %span.glyphicon.glyphicon-remove.form-control-feedback.js-typeahead-remove + = f.hidden_field(:registrar_id, class: 'js-registrar-id') + .form-group + .checkbox + %label{for: 'epp_user_active'} + = f.check_box(:active) + = t('shared.active') + + .col-md-6.text-left + .form-group + = f.label :crt, t('shared.crt') + = f.text_area :crt, class: 'form-control' + %hr + .row + .col-md-12.text-right + = button_tag(t('shared.save'), class: 'btn btn-primary') + +:javascript + Autocomplete.bindAdminRegistrarSearch(); diff --git a/app/views/admin/epp_users/edit.haml b/app/views/admin/epp_users/edit.haml new file mode 100644 index 000000000..fff08a9c6 --- /dev/null +++ b/app/views/admin/epp_users/edit.haml @@ -0,0 +1,9 @@ +.row + .col-sm-6 + %h2.text-center-xs + = "#{t('shared.edit_epp_user')}" + .col-sm-6 + %h2.text-right.text-center-xs + = link_to(t('shared.back_to_epp_user'), [:admin, @epp_user], class: 'btn btn-default') +%hr += render 'form' diff --git a/app/views/admin/epp_users/index.haml b/app/views/admin/epp_users/index.haml new file mode 100644 index 000000000..f15854aec --- /dev/null +++ b/app/views/admin/epp_users/index.haml @@ -0,0 +1,28 @@ +.row + .col-sm-6 + %h2.text-center-xs= t('shared.epp_users') + .col-sm-6 + %h2.text-right.text-center-xs + = link_to(t('shared.create_new_epp_user'), new_admin_epp_user_path, class: 'btn btn-primary') +%hr +.row + .col-md-12 + .table-responsive + %table.table.table-hover.table-bordered.table-condensed + %thead + %tr + %th{class: 'col-xs-2'} + = sort_link(@q, 'username') + %th{class: 'col-xs-2'} + = sort_link(@q, 'registrar', t('shared.registrar')) + %th{class: 'col-xs-2'} + = sort_link(@q, 'active', t('shared.active')) + %tbody + - @epp_users.each do |x| + %tr + %td= link_to(x, [:admin, x]) + %td= link_to(x.registrar, [:admin, x.registrar]) + %td= x.active +.row + .col-md-12 + = paginate @epp_users diff --git a/app/views/admin/epp_users/new.haml b/app/views/admin/epp_users/new.haml new file mode 100644 index 000000000..04729b9cf --- /dev/null +++ b/app/views/admin/epp_users/new.haml @@ -0,0 +1,3 @@ +%h2= t('shared.create_new_epp_user') +%hr += render 'form' diff --git a/app/views/admin/epp_users/show.haml b/app/views/admin/epp_users/show.haml new file mode 100644 index 000000000..664b6f91f --- /dev/null +++ b/app/views/admin/epp_users/show.haml @@ -0,0 +1,40 @@ +.row + .col-sm-6 + %h2.text-center-xs + = "#{t('shared.epp_user_details')}" + .col-sm-6 + %h2.text-right.text-center-xs + = link_to(t('shared.edit'), edit_admin_epp_user_path(@epp_user), class: 'btn btn-primary') + = link_to(t('shared.delete'), admin_epp_user_path(@epp_user), method: :delete, data: { confirm: t('shared.are_you_sure') }, class: 'btn btn-danger') + +%hr +- if @epp_user.errors.any? + - @epp_user.errors.each do |attr, err| + = err + %br +- if @epp_user.errors.any? + %hr +.row + .col-md-6 + .panel.panel-default + .panel-heading + %h3.panel-title= t('shared.general') + .panel-body + %dl.dl-horizontal + %dt= t('shared.username') + %dd= @epp_user.username + + %dt= t('shared.password') + %dd= @epp_user.password + + %dt= t('shared.active') + %dd= @epp_user.active + + .col-md-6 + .panel.panel-default + .panel-heading + %h3.panel-title= t('shared.certificates') + .panel-body + %dl.dl-horizontal + %dt= t('shared.crt') + %dd= @epp_user.crt diff --git a/app/views/layouts/application.haml b/app/views/layouts/application.haml index d733865be..478972009 100644 --- a/app/views/layouts/application.haml +++ b/app/views/layouts/application.haml @@ -40,7 +40,7 @@ %li = link_to t('shared.users'), admin_users_path %li - = link_to t('shared.epp_users'), '#' + = link_to t('shared.epp_users'), admin_epp_users_path %li.divider %li.dropdown-header= 'Something else' %li diff --git a/config/locales/en.yml b/config/locales/en.yml index 16011d2c1..30720c4ef 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -349,13 +349,17 @@ en: users: 'Users' create_new_user: 'Create new user' - user_added: 'User added!' - failed_to_add_user: 'Failed to add user' admin: 'Admin' user_details: 'User details' edit_user: 'Edit user' back_to_user: 'Back to user' + create_new_epp_user: 'Create new EPP user' + crt: 'Certificate' + epp_user_details: 'EPP user details' + edit_epp_user: 'Edit EPP user' + back_to_epp_user: 'Back to EPP user' + record_created: 'Record created' failed_to_create_record: 'Failed to create record' record_updated: 'Record updated' diff --git a/config/routes.rb b/config/routes.rb index c169880ba..74db2fd3f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -22,6 +22,7 @@ Rails.application.routes.draw do end resources :users + resources :epp_users root 'domains#index' end