Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions app/models/concerns/password_resettable.rb
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ def generate_password_reset_token
end

def send_password_reset_email(token:)
return if
managed? # managed users aren't allowed to reset password

UserMailer.password_reset(user: self, token: token).deliver_later
end
end
8 changes: 5 additions & 3 deletions app/models/user.rb
Original file line number Diff line number Diff line change
Expand Up @@ -456,9 +456,11 @@ def free_or_disposable_email?
def single_sign_on_enabled? = !role.user? && account.sso?
alias :sso_enabled? :single_sign_on_enabled?

def password?
password_digest?
end
def password? = password_digest?
def passwordless? = !password?

# NOTE(ezekg) a "managed user" is a passwordless user with the "user" role
def managed? = has_role?(:user) && passwordless? && account.protected?

def active?(t = 90.days.ago)
created_at >= t || any_active_licenses.any?
Expand Down
4 changes: 2 additions & 2 deletions app/policies/users/password_policy.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ def reset?
verify_permissions!('user.password.reset')
verify_environment!

# User's without a password set cannot reset their password if account is protected
# users without a password set cannot reset their password
deny! if
user.has_role?(:user) && account.protected? && !user.password?
user.managed?

bearer.nil? || user == bearer
end
Expand Down
2 changes: 1 addition & 1 deletion app/views/user_mailer/password_reset.html.haml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
-# frozen_string_literal: true
- if @user.password?
- if @user.managed? || @user.password?
%p
A password reset request was issued for a user profile signed up under this
email address for <strong>#{@account.name}</strong>. To reset your password,
Expand Down