diff options
| author | Robert | 2017-05-29 16:14:16 +0200 |
|---|---|---|
| committer | Robert | 2017-05-29 17:34:42 +0200 |
| commit | ca2b8c09f0930a4e55c50693f9d95e36ff4c2fc6 (patch) | |
| tree | 45957727c3472c7fb2ca6f0acef9d0bbede16561 /app | |
| parent | d67ad14d0fe9fbfe08a450317d208afcee48d819 (diff) | |
| download | chouette-core-ca2b8c09f0930a4e55c50693f9d95e36ff4c2fc6.tar.bz2 | |
Refs: 3385; Headless LoginPolicy defined and used in cas_sessions_controller
Diffstat (limited to 'app')
| -rw-r--r-- | app/controllers/devise/cas_sessions_controller.rb | 8 | ||||
| -rw-r--r-- | app/controllers/users/login_controller.rb | 0 | ||||
| -rw-r--r-- | app/policies/application_policy.rb | 2 | ||||
| -rw-r--r-- | app/policies/boiv_policy.rb | 4 | ||||
| -rw-r--r-- | app/policies/login_policy.rb | 13 |
5 files changed, 21 insertions, 6 deletions
diff --git a/app/controllers/devise/cas_sessions_controller.rb b/app/controllers/devise/cas_sessions_controller.rb index ecc7e9f7e..629e209f2 100644 --- a/app/controllers/devise/cas_sessions_controller.rb +++ b/app/controllers/devise/cas_sessions_controller.rb @@ -16,7 +16,13 @@ class Devise::CasSessionsController < Devise::SessionsController end def service - redirect_to after_sign_in_path_for(warden.authenticate!(:scope => resource_name)) + warden.authenticate!(:scope => resource_name) + if LoginPolicy.new(current_user).boiv? + redirect_to after_sign_in_path_for(current_user) + else + # TODO: Set flash here + redirect_to :new + end end def unregistered diff --git a/app/controllers/users/login_controller.rb b/app/controllers/users/login_controller.rb new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/app/controllers/users/login_controller.rb diff --git a/app/policies/application_policy.rb b/app/policies/application_policy.rb index a863404ae..08752cda3 100644 --- a/app/policies/application_policy.rb +++ b/app/policies/application_policy.rb @@ -8,7 +8,7 @@ class ApplicationPolicy end def archived? - !!referential.try(:archived_at) + !!referential.try( :archived_at ) end def referential diff --git a/app/policies/boiv_policy.rb b/app/policies/boiv_policy.rb index 9679d083a..4270dc686 100644 --- a/app/policies/boiv_policy.rb +++ b/app/policies/boiv_policy.rb @@ -5,10 +5,6 @@ class BoivPolicy < ApplicationPolicy organisation_match? && user.has_permission?('boiv:read-offer') end - def boiv? - !(user.permissions || []).grep(%r{\Aboiv:.}).empty? - end - def index? boiv_read_offer? end diff --git a/app/policies/login_policy.rb b/app/policies/login_policy.rb new file mode 100644 index 000000000..3364c37ac --- /dev/null +++ b/app/policies/login_policy.rb @@ -0,0 +1,13 @@ +# Headless as described here https://github.com/elabs/pundit#headless-policies +class LoginPolicy + + attr_reader :user + def initialize user + @user = user + end + + def boiv? + !(user.permissions || []).grep(%r{\Aboiv:.}).empty? + end + +end |
