Sha256: 9cf468411c0c5b8cbf4de1e651323035ecc3b9bd654e19217ace603f5199b64c
Contents?: true
Size: 1.23 KB
Versions: 1
Compression:
Stored size: 1.23 KB
Contents
# frozen_string_literal: true module Maquina class User < ApplicationRecord include Maquina::RetainPasswords include Maquina::AuthenticateBy include Maquina::Blockeable include Maquina::Multifactor PASSWORD_COMPLEXITY_REGEX = /\A(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&#-=+])[A-Za-z\d@$!%*?&#-=+]{8,}\z/ has_secure_password has_many :memberships, class_name: "Maquina::Membership", foreign_key: :maquina_user_id, inverse_of: :user has_many :active_sessions, class_name: "Maquina::ActiveSession", foreign_key: :maquina_user_id, dependent: :destroy validates :email, presence: true, uniqueness: true, format: {with: URI::MailTo::EMAIL_REGEXP} validates :password, format: {with: PASSWORD_COMPLEXITY_REGEX}, unless: ->(user) { user.password.blank? } before_save :downcase_email def expired_password? return false if password_expires_at.blank? password_expires_at < Time.zone.now end def default_membership return nil if management? memberships.detect { |membership| membership.blocked_at.blank? && membership.organization.present? && membership.organization.active? } end private def downcase_email self.email = email.downcase end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
maquina-0.5.2 | app/models/maquina/user.rb |