diff options
author | David Gay <david@davidgay.org> | 2021-05-19 21:34:16 -0400 |
---|---|---|
committer | David Gay <david@davidgay.org> | 2021-05-19 21:34:16 -0400 |
commit | da678b22b5db05554b44234b341fabc9d83ff700 (patch) | |
tree | 6eaa62d82eba324205ce6c10d05021ad78a8326b | |
parent | 5afdcd12f04102b5cf5d5a310981bc576a992119 (diff) |
Add permission level to Users
-rw-r--r-- | app/models/user.rb | 14 | ||||
-rw-r--r-- | db/migrate/20210520013124_add_permission_level_to_users.rb | 5 | ||||
-rw-r--r-- | db/schema.rb | 3 |
3 files changed, 21 insertions, 1 deletions
diff --git a/app/models/user.rb b/app/models/user.rb index 59d9ac3..bc09808 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -5,4 +5,18 @@ class User < ApplicationRecord :confirmable, :lockable has_many :characters belongs_to :active_character, class_name: "Character", optional: true + attribute :permission_level, :integer, default: 1 + enum permission_level: { + banned: 0, + player: 1, + helper: 2, + builder: 3, + admin: 4, + developer: 5, + owner: 6 + } + + def has_permission_or_higher?(permission_level) + User.permission_levels[self.permission_level] >= User.permission_levels[permission_level] + end end diff --git a/db/migrate/20210520013124_add_permission_level_to_users.rb b/db/migrate/20210520013124_add_permission_level_to_users.rb new file mode 100644 index 0000000..fcbf636 --- /dev/null +++ b/db/migrate/20210520013124_add_permission_level_to_users.rb @@ -0,0 +1,5 @@ +class AddPermissionLevelToUsers < ActiveRecord::Migration[6.1] + def change + add_column :users, :permission_level, :integer + end +end diff --git a/db/schema.rb b/db/schema.rb index 0fd6922..4f75f04 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2021_05_18_214817) do +ActiveRecord::Schema.define(version: 2021_05_20_013124) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -138,6 +138,7 @@ ActiveRecord::Schema.define(version: 2021_05_18_214817) do t.datetime "created_at", precision: 6, null: false t.datetime "updated_at", precision: 6, null: false t.bigint "active_character_id" + t.integer "permission_level" t.index ["active_character_id"], name: "index_users_on_active_character_id" t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true t.index ["email"], name: "index_users_on_email", unique: true |