2015-09-23 10:02:01 +02:00
|
|
|
class User < ActiveRecord::Base
|
2015-12-24 10:12:23 +01:00
|
|
|
enum loged_in_with_france_connect: {particulier: 'particulier',
|
|
|
|
entreprise: 'entreprise'}
|
|
|
|
|
2015-09-23 10:02:01 +02:00
|
|
|
# Include default devise modules. Others available are:
|
|
|
|
# :confirmable, :lockable, :timeoutable and :omniauthable
|
|
|
|
devise :database_authenticatable, :registerable,
|
|
|
|
:recoverable, :rememberable, :trackable, :validatable
|
2015-09-23 12:16:21 +02:00
|
|
|
|
2016-01-18 16:20:51 +01:00
|
|
|
has_many :dossiers, dependent: :destroy
|
2016-02-08 18:16:18 +01:00
|
|
|
has_many :invites, dependent: :destroy
|
2016-03-17 17:33:38 +01:00
|
|
|
has_many :piece_justificative, dependent: :destroy
|
|
|
|
has_many :cerfa, dependent: :destroy
|
2016-01-21 17:06:09 +01:00
|
|
|
has_one :france_connect_information, dependent: :destroy
|
2015-10-06 11:21:20 +02:00
|
|
|
|
2016-01-21 17:06:09 +01:00
|
|
|
delegate :given_name, :family_name, :email_france_connect, :gender, :birthdate, :birthplace, :france_connect_particulier_id, to: :france_connect_information
|
|
|
|
accepts_nested_attributes_for :france_connect_information
|
2015-12-24 10:12:23 +01:00
|
|
|
|
2016-10-11 10:31:32 +02:00
|
|
|
after_update :sync_credentials
|
|
|
|
|
2015-10-07 10:29:44 +02:00
|
|
|
def self.find_for_france_connect email, siret
|
2015-10-06 11:21:20 +02:00
|
|
|
user = User.find_by_email(email)
|
2015-10-07 10:29:44 +02:00
|
|
|
if user.nil?
|
2015-12-24 10:12:23 +01:00
|
|
|
return User.create(email: email, password: Devise.friendly_token[0, 20], siret: siret)
|
2015-10-07 10:29:44 +02:00
|
|
|
else
|
|
|
|
user.update_attributes(siret: siret)
|
|
|
|
user
|
|
|
|
end
|
2015-10-06 11:21:20 +02:00
|
|
|
end
|
2015-12-24 10:12:23 +01:00
|
|
|
|
|
|
|
def loged_in_with_france_connect?
|
|
|
|
!loged_in_with_france_connect.nil?
|
|
|
|
end
|
2016-03-22 17:36:36 +01:00
|
|
|
|
|
|
|
def invite? dossier_id
|
|
|
|
invites.pluck(:dossier_id).include?(dossier_id.to_i)
|
|
|
|
end
|
2016-10-11 10:31:32 +02:00
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def sync_credentials
|
|
|
|
if email_changed? || encrypted_password_changed?
|
|
|
|
gestionnaire = Gestionnaire.find_by(email: email_was)
|
|
|
|
if gestionnaire
|
|
|
|
return gestionnaire.update_columns(
|
|
|
|
email: email,
|
|
|
|
encrypted_password: encrypted_password)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
true
|
|
|
|
end
|
2015-09-23 10:02:01 +02:00
|
|
|
end
|