manage AgentConnect callback
This commit is contained in:
parent
1926a630f9
commit
5234a1854c
4 changed files with 46 additions and 1 deletions
|
@ -1,3 +1,4 @@
|
|||
# doc: https://github.com/france-connect/Documentation-AgentConnect
|
||||
class AgentConnect::AgentController < ApplicationController
|
||||
def index
|
||||
end
|
||||
|
@ -5,4 +6,35 @@ class AgentConnect::AgentController < ApplicationController
|
|||
def login
|
||||
redirect_to AgentConnectService.authorization_uri
|
||||
end
|
||||
|
||||
def callback
|
||||
user_info = AgentConnectService.user_info(params[:code])
|
||||
|
||||
instructeur = Instructeur.find_by(agent_connect_id: user_info['sub'])
|
||||
|
||||
if instructeur.nil?
|
||||
instructeur = Instructeur.find_by(users: { email: santized_email(user_info) })
|
||||
instructeur&.update(agent_connect_id: user_info['sub'])
|
||||
end
|
||||
|
||||
if instructeur.nil?
|
||||
user = User.create_or_promote_to_instructeur(santized_email(user_info), Devise.friendly_token[0, 20])
|
||||
instructeur = user.instructeur
|
||||
instructeur.update(agent_connect_id: user_info['sub'])
|
||||
end
|
||||
|
||||
sign_in(:user, instructeur.user)
|
||||
|
||||
redirect_to instructeur_procedures_path
|
||||
|
||||
rescue Rack::OAuth2::Client::Error => e
|
||||
Rails.logger.error e.message
|
||||
redirect_france_connect_error_connection
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def santized_email(user_info)
|
||||
user_info['email'].strip.downcase
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue