implement user creation by admin

This commit is contained in:
Eugene Dubinin 2017-01-10 17:07:28 +02:00 committed by Stella Rouzi
parent f057900fb1
commit 93404d543f
5 changed files with 93 additions and 21 deletions

View file

@ -6,6 +6,17 @@ module Admin
@user = User.new
end
def create
@user = User.new(user_params)
@user.skip_confirmation!
if @user.save
redirect_to admin_users_path, notice: 'User successfully created.'
else
flash.now[:error] = "Creating User failed: #{@user.errors.full_messages.join('. ')}."
render :new
end
end
def index
@users = User.all
end
@ -50,8 +61,9 @@ module Admin
private
def user_params
params.require(:user).permit(:email, :name, :email_public, :biography, :nickname, :affiliation, :is_admin, :username, :login, :is_disabled,
:tshirt, :mobile, :volunteer_experience, :languages, :to_confirm, role_ids: [])
params.require(:user).permit(:email, :name, :email_public, :biography, :nickname, :affiliation, :is_admin,
:username, :login, :is_disabled, :tshirt, :mobile, :volunteer_experience,
:languages, :to_confirm, :password, role_ids: [])
end
end
end

View file

@ -119,6 +119,9 @@ class Ability
# for admins
can :manage, :all if user.is_admin
# even admin cannot create new users with ICHAIN enabled
cannot [:new, :create], User if ENV['OSEM_ICHAIN_ENABLED'] == 'true'
cannot :revert_object, PaperTrail::Version do |version|
(version.event == 'create' && %w(Conference User Event).include?(version.item_type))
end

View file

@ -1,25 +1,28 @@
= semantic_form_for [:admin, @user] do |f|
= f.inputs 'Basic Information' do
.pull-right
%b
Confirmed?
- if can? :toggle_confirmation, @user
= check_box_tag @user.id, @user.id, @user.confirmed?,
method: :patch,
url: "/admin/users/#{@user.id}/toggle_confirmation?user[to_confirm]=",
class: 'switch-checkbox',
readonly: false,
data: { size: 'small', on_color: 'success', off_color: 'warning', on_text: 'Yes', off_text: 'No' }
- else
= check_box_tag @user.id, @user.id, @user.confirmed?,
method: :patch,
url: "/admin/users/#{@user.id}/toggle_confirmation?user[to_confirm]=",
class: 'switch-checkbox',
readonly: true,
data: { size: 'small', on_color: 'success', off_color: 'warning', on_text: 'Yes', off_text: 'No' }
- unless @user.new_record?
.pull-right
%b
Confirmed?
- if can? :toggle_confirmation, @user
= check_box_tag @user.id, @user.id, @user.confirmed?,
method: :patch,
url: "/admin/users/#{@user.id}/toggle_confirmation?user[to_confirm]=",
class: 'switch-checkbox',
readonly: false,
data: { size: 'small', on_color: 'success', off_color: 'warning', on_text: 'Yes', off_text: 'No' }
- else
= check_box_tag @user.id, @user.id, @user.confirmed?,
method: :patch,
url: "/admin/users/#{@user.id}/toggle_confirmation?user[to_confirm]=",
class: 'switch-checkbox',
readonly: true,
data: { size: 'small', on_color: 'success', off_color: 'warning', on_text: 'Yes', off_text: 'No' }
= f.input :is_admin, hint: 'An admin can create a new conference, manage users and make other users admins.'
= f.input :name, as: :string
= f.input :username, :as => :string if @user.new_record?
= f.input :email
= f.input :password if @user.new_record?
= f.input :affiliation, as: :string
= f.input :biography, input_html: { rows: 10, data: { provide: 'markdown-editable' } },
hint: markdown_hint

View file

@ -1,10 +1,13 @@
.row
.col-md-12
.page-header
%h2
%h1
Users
- if @users
= "(#{@users.length})"
- if can? :create, User
.pull-right
=link_to 'Add User', new_admin_user_path, :class => 'button btn btn-default btn-info'
.row
.col-md-12.table-responsive
%table.table.table-striped.table-bordered.table-hover.datatable