summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/user.rb14
-rw-r--r--db/migrate/20210520013124_add_permission_level_to_users.rb5
-rw-r--r--db/schema.rb3
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