Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/app/controllers/entities_controller.rb b/app/controllers/entities_controller.rb
- index b50d410..11274af 100644
- --- a/app/controllers/entities_controller.rb
- +++ b/app/controllers/entities_controller.rb
- @@ -127,7 +127,7 @@ def setup_existing_guest
- entity = Entity.find_by_email(params[:email])
- entity_role = nil
- if entity.present?
- - role_hash = { login: params[:email], password: random_password, active: true}
- + role_hash = { login: params[:email], password: User.random_password, active: true}
- entity_role = entity.send(:as_user, role_hash)
- unless entity_role.roles.include?("guest_user")
- roles = entity_role.roles.present? ? "#{entity_role.roles}, guest_user" : "guest_user"
- @@ -311,26 +311,8 @@ def guest_entity_profile
- end
- def password_reset
- - entity = Entity.find_by_email(params[:email])
- - if entity.present?
- - system_user = entity.entity_roles.where(system_role_type: "User")
- - if system_user.present?
- - user_id = system_user.first.system_role_id
- - user = User.find(user_id)
- - if user.present?
- - password = random_password
- - user.update_attributes(password: password, display_profile: true)
- - UserMailer.send_login_details(params[:email], user.login, password).deliver
- - @message = 'success'
- - else
- - @message = "failure"
- - end
- - else
- - @message = "failure"
- - end
- - else
- - @message = "failure"
- - end
- + entity = Entity.find_by_email_and_role_or_no_entity(params[:email], "User")
- + @message = entity.reset_user_password("User") ? "success" : "failure"
- respond_to do |format|
- format.json { render json: { message: @message } }
- end
- @@ -412,10 +394,4 @@ def role
- def search_matching_entity(entity)
- Entity.where(Entity.conditions_by_criteria(entity,:strip => Entity::PHONE_TYPES) ).order("last_name, first_name, organization_name")
- end
- -
- - private
- -
- - def random_password
- - (0...8).map { (65 + rand(26)).chr }.join
- - end
- end
- diff --git a/app/models/entity.rb b/app/models/entity.rb
- index a25e4a5..46f6fa0 100644
- --- a/app/models/entity.rb
- +++ b/app/models/entity.rb
- @@ -39,6 +39,9 @@ class Entity < ActiveRecord::Base
- # * entity - must be constantizable as a subclass of Entity
- # (Person, Organization, etc.)
- #
- +
- + scope :by_system_role_and_email, ->(email, role) { joins(:entity_roles).where("entities.email = ? AND entity_roles.system_role_type = ?", email, role) }
- +
- def self.find_or_create_in_role(role, entity, entity_hash, role_hash = {})
- entity = entity.to_s.classify.constantize.send(:find_or_initialize!, entity_hash)
- @@ -126,6 +129,25 @@ def phone_number
- send("#{prefered_number}_phone")
- end
- + def find_user_by_role(role)
- + entity_role_by_role = entity_roles.find_by_system_role_type(role)
- + if entity_role_by_role
- + user_id = entity_role_by_role.system_role_id
- + User.find_by_id_or_no_user(user_id)
- + else
- + NoUser.new
- + end
- + end
- +
- +
- + def self.find_by_email_and_role_or_no_entity(email, role)
- + by_system_role_and_email(email, role).first || NoEntity.new
- + end
- +
- + def reset_user_password(role)
- + find_user_by_role(role).reset_password(email)
- + end
- +
- # Checks to see if the requested method matches a subclass of Entity so
- # that we can return the entity with confidence that its subclass's
- # methods may be called.
- diff --git a/app/models/no_entity.rb b/app/models/no_entity.rb
- new file mode 100644
- index 0000000..a310638
- --- /dev/null
- +++ b/app/models/no_entity.rb
- @@ -0,0 +1,6 @@
- +class NoEntity
- +
- + def reset_user_password(role = nil)
- + false
- + end
- +end
- \ No newline at end of file
- diff --git a/app/models/no_user.rb b/app/models/no_user.rb
- new file mode 100644
- index 0000000..1c1050b
- --- /dev/null
- +++ b/app/models/no_user.rb
- @@ -0,0 +1,5 @@
- +class NoUser
- + def reset_password(email = nil)
- + false
- + end
- +end
- \ No newline at end of file
- diff --git a/app/models/user.rb b/app/models/user.rb
- index b141645..76e964f 100644
- --- a/app/models/user.rb
- +++ b/app/models/user.rb
- @@ -125,6 +125,13 @@ def authorized?( *roles )
- return false
- end
- + def reset_password(email)
- + password = User.random_password
- + is_successful = update_attributes(password: password, display_profile: true)
- + UserMailer.send_login_details(email, login, password).deliver if is_successful
- + is_successful
- + end
- +
- # True if the user has only read_only roles.
- def is_in_a_read_only_role?
- user_roles.all? { |r| r.read_only? }
- @@ -135,4 +142,12 @@ def generate_access_token
- self.access_token = SecureRandom.hex
- end while self.class.exists?(access_token: access_token)
- end
- +
- + def self.find_by_id_or_no_user(id)
- + find_by_id(id) || NoUser.new
- + end
- +
- + def self.random_password
- + (0...8).map { (65 + rand(26)).chr }.join
- + end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement