From ca820a87e083ed7aff95e6c903732d2d4fca7949 Mon Sep 17 00:00:00 2001 From: Sea <30443703+seafr@users.noreply.github.com> Date: Sun, 11 Mar 2018 03:36:13 +0400 Subject: [PATCH] Add methods to User model for verifying user roles (#2448) * Add methods to User model for user roles * Add a comment --- app/models/user.rb | 15 ++++++++++++++- test/unit/user_test.rb | 15 +++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/app/models/user.rb b/app/models/user.rb index 3afc564528..369e2f21a4 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -137,6 +137,19 @@ def has_role(r) role == r end + def admin? + role == 'admin' + end + + def moderator? + role == 'moderator' + end + + def can_moderate? + # use instead of "user.role == 'admin' || user.role == 'moderator'" + admin? || moderator? + end + def tags(limit = 10) Tag.where('name in (?)', tagnames).limit(limit) end @@ -356,4 +369,4 @@ def self.contributor_count_for(start_time,end_time) contributors end -end \ No newline at end of file +end diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb index c2e240a731..2f20e7652f 100644 --- a/test/unit/user_test.rb +++ b/test/unit/user_test.rb @@ -164,4 +164,19 @@ class UserTest < ActiveSupport::TestCase assert_equal 1, drupal_user.user.status end + test 'user roles' do + admin = users(:admin) + assert admin.admin? + assert admin.can_moderate? + + moderator = users(:moderator) + assert moderator.moderator? + assert moderator.can_moderate? + + basic_user = users(:newcomer) + assert_not basic_user.admin? + assert_not basic_user.moderator? + assert_not basic_user.can_moderate? + end + end