Files
codeocean/app/models/internal_user.rb
2022-09-22 19:24:26 +02:00

41 lines
937 B
Ruby

# frozen_string_literal: true
require 'zxcvbn'
class InternalUser < User
authenticates_with_sorcery!
attr_accessor :validate_password
validates :email, presence: true, uniqueness: true
validates :password, confirmation: true, if: -> { password_void? && validate_password? }, on: :update, presence: true
validate :password_strength, if: -> { password_void? && validate_password? }, on: :update
accepts_nested_attributes_for :study_group_memberships
def activated?
activation_state == 'active'
end
def password_void?
activation_token? || reset_password_token?
end
private :password_void?
def validate_password?
return true if @validate_password.nil?
@validate_password
end
private :validate_password?
def password_strength
result = Zxcvbn.test(password, [email, name, 'CodeOcean'])
errors.add(:password, :weak) if result.score < 4
end
def displayname
name
end
end