2018-03-06 13:44:29 +01:00
|
|
|
class User < ApplicationRecord
|
2018-02-28 14:31:03 +01:00
|
|
|
include CredentialsSyncableConcern
|
|
|
|
include EmailSanitizableConcern
|
|
|
|
|
2017-05-26 21:31:51 +02:00
|
|
|
enum loged_in_with_france_connect: {
|
|
|
|
particulier: 'particulier',
|
|
|
|
entreprise: 'entreprise'
|
|
|
|
}
|
2015-12-24 10:12:23 +01:00
|
|
|
|
2015-09-23 10:02:01 +02:00
|
|
|
# Include default devise modules. Others available are:
|
|
|
|
# :confirmable, :lockable, :timeoutable and :omniauthable
|
2018-05-26 00:06:40 +02:00
|
|
|
devise :database_authenticatable, :registerable, :async,
|
2019-05-22 18:33:00 +02:00
|
|
|
:recoverable, :rememberable, :trackable, :validatable, :confirmable, :lockable
|
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
|
2018-04-03 10:48:46 +02:00
|
|
|
has_many :dossiers_invites, through: :invites, source: :dossier
|
2018-08-08 17:37:41 +02:00
|
|
|
has_many :feedbacks, dependent: :destroy
|
2016-01-21 17:06:09 +01:00
|
|
|
has_one :france_connect_information, dependent: :destroy
|
2019-08-08 16:49:40 +02:00
|
|
|
belongs_to :instructeur
|
2019-08-09 09:45:11 +02:00
|
|
|
belongs_to :administrateur
|
2015-10-06 11:21:20 +02:00
|
|
|
|
2016-01-21 17:06:09 +01:00
|
|
|
accepts_nested_attributes_for :france_connect_information
|
2017-02-07 16:56:21 +01:00
|
|
|
|
2018-02-28 14:31:03 +01:00
|
|
|
before_validation -> { sanitize_email(:email) }
|
2016-10-11 10:31:32 +02:00
|
|
|
|
2018-09-19 11:56:05 +02:00
|
|
|
# Callback provided by Devise
|
|
|
|
def after_confirmation
|
|
|
|
link_invites!
|
|
|
|
end
|
|
|
|
|
2018-05-30 18:26:23 +02:00
|
|
|
def owns?(dossier)
|
|
|
|
dossier.user_id == id
|
|
|
|
end
|
|
|
|
|
2018-03-20 17:47:37 +01:00
|
|
|
def invite?(dossier_id)
|
2016-03-22 17:36:36 +01:00
|
|
|
invites.pluck(:dossier_id).include?(dossier_id.to_i)
|
|
|
|
end
|
2018-05-30 18:31:02 +02:00
|
|
|
|
|
|
|
def owns_or_invite?(dossier)
|
|
|
|
owns?(dossier) || invite?(dossier.id)
|
|
|
|
end
|
2018-09-19 11:56:05 +02:00
|
|
|
|
2019-08-07 15:52:38 +02:00
|
|
|
def invite!
|
|
|
|
UserMailer.invite_instructeur(self, set_reset_password_token).deliver_later
|
|
|
|
end
|
|
|
|
|
2018-09-19 11:56:05 +02:00
|
|
|
private
|
|
|
|
|
|
|
|
def link_invites!
|
|
|
|
Invite.where(email: email).update_all(user_id: id)
|
|
|
|
end
|
2015-09-23 10:02:01 +02:00
|
|
|
end
|