ADD 后台管理系统 添加新增用户功能
This commit is contained in:
parent
abc21413ac
commit
8ee089b82d
|
@ -58,11 +58,55 @@ class Admins::UsersController < Admins::BaseController
|
|||
render_ok
|
||||
end
|
||||
|
||||
private
|
||||
def new
|
||||
@user = User.new
|
||||
end
|
||||
|
||||
def create
|
||||
logger.info "---validate_create_params: #{validate_create_params}"
|
||||
Users::AdminCreateUserForm.new(validate_create_params).validate!
|
||||
|
||||
user = User.new(create_params)
|
||||
user.type = 'User'
|
||||
ActiveRecord::Base.transaction do
|
||||
if user.save!
|
||||
UserExtension.create!(user_id: user.id)
|
||||
interactor = Gitea::RegisterInteractor.call({username: user.login, email: user.mail, password: create_params[:password]})
|
||||
if interactor.success?
|
||||
gitea_user = interactor.result
|
||||
result = Gitea::User::GenerateTokenService.call(user.login, create_params[:password])
|
||||
user.gitea_token = result['sha1']
|
||||
user.gitea_uid = gitea_user[:body]['id']
|
||||
user.save!
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
flash[:success] = '保存成功'
|
||||
redirect_to admins_users_path
|
||||
rescue ActiveRecord::RecordInvalid => e
|
||||
logger.info "------------ #{e.message}"
|
||||
puts e.message
|
||||
flash.now[:danger] = e.message
|
||||
render 'new'
|
||||
rescue Exception => ex
|
||||
flash.now[:danger] = ex.message
|
||||
render 'new'
|
||||
end
|
||||
|
||||
|
||||
private
|
||||
def update_params
|
||||
params.require(:user).permit(%i[lastname nickname gender identity technical_title student_id is_shixun_marker
|
||||
mail phone location location_city school_id department_id admin business is_test
|
||||
password professional_certification authentication])
|
||||
end
|
||||
|
||||
def create_params
|
||||
params.require(:user).permit(%i[login nickname gender mail phone location location_city password professional_certification])
|
||||
end
|
||||
|
||||
def validate_create_params
|
||||
create_params.slice(:login, :mail, :phone, :password)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
class Users::AdminCreateUserForm
|
||||
include ActiveModel::Model
|
||||
|
||||
|
||||
attr_accessor :mail, :login, :phone, :password
|
||||
|
||||
validates :login, presence: true
|
||||
validates :mail, presence: true, format: { with: CustomRegexp::EMAIL, message: "邮箱格式错误." }
|
||||
validates :phone, presence: true, format: { with: CustomRegexp::PHONE, message: "手机号格式错误" }
|
||||
validates :password, presence: true, length: { minimum: 8, maximum: 16 }, format: { with: CustomRegexp::PASSWORD, message: "8~16位密码,支持字母数字和符号" }
|
||||
|
||||
validate :check_login, :check_mail
|
||||
|
||||
private
|
||||
def check_mail
|
||||
return if mail.blank?
|
||||
if User.exists?(mail: mail)
|
||||
raise "邮箱 #{mail} 已使用."
|
||||
errors.add(:mail, :not_exist)
|
||||
end
|
||||
end
|
||||
|
||||
def check_login
|
||||
return if login.blank?
|
||||
if User.exists?(login: login)
|
||||
raise "手机号 #{login} 已使用."
|
||||
errors.add(:login, :not_exist)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
|
@ -64,12 +64,12 @@
|
|||
<%= f.label :identity, label: '职业' %>
|
||||
<%= select_tag('user[identity]', [], class: 'form-control identity-select optional', 'data-value': @user.user_extension&.identity, 'data-first-title': '请选择') %>
|
||||
</div>
|
||||
<div class="form-group technical-title-select-wrapper optional col-md-1" style="<%= @user.user_extension.student? ? 'display:none;' : '' %>">
|
||||
<div class="form-group technical-title-select-wrapper optional col-md-1" style="<%= @user.user_extension&.student? ? 'display:none;' : '' %>">
|
||||
<%= f.label :technical_title, label: '职称' %>
|
||||
<%= select_tag('user[technical_title]', [], class: 'form-control technical-title-select optional', 'data-value': @user.technical_title) %>
|
||||
</div>
|
||||
|
||||
<%= f.input :student_id, as: :tel, label: '学号', wrapper_html: { class: 'col-md-2', style: @user.user_extension.student? ? '' : 'display:none;' }, input_html: { class: 'student-id-input' } %>
|
||||
<%= f.input :student_id, as: :tel, label: '学号', wrapper_html: { class: 'col-md-2', style: @user.user_extension&.student? ? '' : 'display:none;' }, input_html: { class: 'student-id-input' } %>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
<%= submit_tag('搜索', class: 'btn btn-primary ml-3', 'data-disable-with': '搜索中...') %>
|
||||
<% end %>
|
||||
|
||||
<%= link_to '新增', new_admins_user_path, class: 'btn btn-primary ml-3' %>
|
||||
<%#= javascript_void_link '导入用户', class: 'btn btn-secondary btn-sm', data: { toggle: 'modal', target: '.admin-import-user-modal'} %>
|
||||
<%
|
||||
=begin%>
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
<%
|
||||
define_admin_breadcrumbs do
|
||||
add_admin_breadcrumb('用户管理', admins_users_path)
|
||||
add_admin_breadcrumb('新增用户')
|
||||
end
|
||||
%>
|
||||
|
||||
<div class="box user-edit-container">
|
||||
<%= simple_form_for([:admins, User.new], url: admins_users_path ) do |f| %>
|
||||
<%= f.error_notification %>
|
||||
<div class="form-group px-2">
|
||||
<div class="form-row">
|
||||
<%= f.input :login, label: '登录名', required: true, wrapper_html: { class: 'col-md-3' }, input_html: { class: 'col-md-11' } %>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<%= f.input :nickname, label: '昵称', wrapper_html: { class: 'col-md-3' }, input_html: { class: 'col-md-11' } %>
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<%= f.input :mail, as: :email, label: '邮箱地址', required: true, error_html: { id: 'password_error'}, wrapper_html: { class: 'col-md-3' }, input_html: { class: 'col-sm-11' } %>
|
||||
<%= f.input :phone, as: :tel, label: '手机号', required: true, wrapper_html: { class: 'col-md-3' }, input_html: { class: 'col-sm-11', autocomplete: 'off' } %>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="form-row">
|
||||
<%= f.input :password, as: :password, required: true, label: '密码', wrapper_html: { class: 'col-md-3' }, input_html: { class: 'col-sm-11', autocomplete: 'new-password' } %>
|
||||
<%= f.input :password_confirmation, as: :password, required: true, label: '确认密码', wrapper_html: { class: 'col-md-3' }, input_html: { class: 'col-sm-11', autocomplete: 'new-password' } %>
|
||||
</div>
|
||||
|
||||
<div class="form-row mt-4">
|
||||
<%= f.button :submit, value: '保存', class: 'btn-primary mr-3 px-4' %>
|
||||
<%= link_to '取消', admins_users_path, class: 'btn btn-secondary px-4' %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
|
@ -0,0 +1,14 @@
|
|||
'zh-CN':
|
||||
activemodel:
|
||||
attributes:
|
||||
users/admin_create_user_form:
|
||||
login: '登录名'
|
||||
password: '密码'
|
||||
mail: '邮箱'
|
||||
phone: '手机号'
|
||||
errors:
|
||||
models:
|
||||
users/admin_create_user_form:
|
||||
attributes:
|
||||
|
||||
|
|
@ -641,7 +641,7 @@ Rails.application.routes.draw do
|
|||
get :contrast, on: :collection
|
||||
end
|
||||
|
||||
resources :users, only: [:index, :edit, :update, :destroy] do
|
||||
resources :users do
|
||||
member do
|
||||
post :reward_grade
|
||||
post :lock
|
||||
|
|
Loading…
Reference in New Issue