Class: ZenAdmin::Generators::AdminUserGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/zen_admin/admin_user/admin_user_generator.rb

Instance Method Summary collapse

Instance Method Details

#create_admin_userObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/generators/zen_admin/admin_user/admin_user_generator.rb', line 6

def create_admin_user
  username = ask("请输入用户名 [admin]:")
  username = "admin" if username.blank?

  # 检查用户是否已存在
  if ZenAdmin::User.exists?(username: username)
    say "错误: 用户 '#{username}' 已存在。", :red
    return
  end

  password = ask_password("请输入密码:")
  
  # 简单强度校验:长度小于 8 位
  if password.length < 8
    say "提示: 密码长度小于 8 位,安全性较低。", :yellow
    unless yes?("确定要使用这个弱密码吗?(y/n)")
      password = ask_password("请重新输入更强的密码:")
    end
  end

  begin
    user = ZenAdmin::User.new(username: username, password: password)
    
    # 自动确保“超级管理员”角色存在
    admin_role = ZenAdmin::Role.find_or_create_by!(code: "superadmin") do |r|
      r.name = "超级管理员"
    end
    
    user.roles << admin_role
    say "已分配超级管理员权限。", :green

    if user.save
      say "成功: 管理员 '#{username}' 已创建!", :green
    else
      say "保存失败: #{user.errors.full_messages.join(', ')}", :red
    end
  rescue => e
    say "发生异常: #{e.message}", :red
  end
end