Add user statuses and seed admin user

This commit is contained in:
cryptogopher 2023-04-01 02:29:59 +02:00
parent d2fbacbf62
commit e29c060a39
5 changed files with 28 additions and 9 deletions

View File

@ -28,7 +28,7 @@ Copy config template and update database configuration:
Run database creation and migration tasks: Run database creation and migration tasks:
RAILS_ENV="production" bundle exec rake db:create db:migrate RAILS_ENV="production" bundle exec rake db:create db:migrate db:seed
## Running ## Running

View File

@ -3,4 +3,13 @@ class User < ApplicationRecord
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable, devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable :recoverable, :rememberable, :validatable
# Statuses ordered by decreasing privileges
enum :status, {
admin: 1, # admin level access
active: 2, # read-write user level access
restricted: 3, # read-only user level access
locked: 4, # disallowed to sign in due to failed logins
disabled: 5 # administratively disallowed to sign in
}, default: :active
end end

View File

@ -35,8 +35,12 @@ module FixinMe
# #
# URL to use in sent e-mails. # URL to use in sent e-mails.
config.action_mailer.default_url_options = {host: 'localhost'} config.action_mailer.default_url_options = {host: 'localhost'}
# List of hosts this app is available at. # List of hosts this app is available at.
# https://guides.rubyonrails.org/configuring.html#actiondispatch-hostauthorization # https://guides.rubyonrails.org/configuring.html#actiondispatch-hostauthorization
config.hosts << 'localhost' config.hosts << 'localhost'
# Email address of admin account
config.admin = 'admin@localhost'
end end
end end

View File

@ -178,7 +178,7 @@ Devise.setup do |config|
# ==> Configuration for :validatable # ==> Configuration for :validatable
# Range for password length. # Range for password length.
config.password_length = 6..128 config.password_length = 5..128
# Email regex used to validate email formats. It simply asserts that # Email regex used to validate email formats. It simply asserts that
# one (and only one) @ exists in the given string. This is mainly # one (and only one) @ exists in the given string. This is mainly

View File

@ -1,7 +1,13 @@
# This file should contain all the record creation needed to seed the database with its default values. # This file should contain all the record creation needed to seed the database
# The data can then be loaded with the bin/rails db:seed command (or created alongside the database with db:setup). # with its default values. The data can then be loaded with the
# # bin/rails db:seed
# Examples: # command (or created alongside the database with db:setup).
# # Seeding process should be idempotent.
# movies = Movie.create([{ name: "Star Wars" }, { name: "Lord of the Rings" }])
# Character.create(name: "Luke", movie: movies.first) User.transaction do
User.find_or_create_by!(status: :admin) do |user|
user.email = Rails.configuration.admin
user.password = 'admin'
puts "Admin account '#{user.email}' created with default password '#{user.password}'"
end
end