scinote-web/app/utilities/users_generator.rb

93 lines
2.4 KiB
Ruby
Raw Normal View History

2016-02-12 23:52:43 +08:00
module UsersGenerator
# Simply validate the user with the given data,
# and return an array of errors (which is 0-length
# if user is valid)
def validate_user(
full_name,
email,
password
)
nu = User.new({
full_name: full_name,
initials: get_user_initials(full_name),
email: email,
password: password
})
nu.validate
nu.errors
end
# If confirmed == true, the user is automatically confirmed;
# otherwise, sciNote sends the "confirmation" email to the user
# If private_org_name == nil, private organization is not created.
def create_user(
full_name,
email,
password,
confirmed,
private_org_name,
org_ids)
nu = User.new({
full_name: full_name,
initials: get_user_initials(full_name),
email: email,
password: password,
password_confirmation: password
})
if confirmed then
nu.confirmed_at = Time.now
end
2016-07-21 19:11:15 +08:00
nu.save!
2016-02-12 23:52:43 +08:00
# TODO: If user is not confirmed, maybe additional email
# needs to be sent with his/her password & email?
# Create user's own organization of needed
if private_org_name.present? then
create_private_user_organization(nu, private_org_name)
end
# Assign user to additional organizations
org_ids.each do |org_id|
org = Organization.find_by_id(org_id)
if org.present?
UserOrganization.create({ user: nu, organization: org, role: :admin })
end
end
# Assign user organization as user current organization
2016-10-13 16:12:11 +08:00
nu.current_organization_id = nu.organizations.first.id
nu.save!
2016-02-12 23:52:43 +08:00
nu.reload
return nu
end
def create_private_user_organization(user, private_org_name)
no = Organization.create({ name: private_org_name, created_by: user })
UserOrganization.create({ user: user, organization: no, role: :admin })
end
def print_user(user, password)
puts "USER ##{user.id}"
puts " Full name: #{user.full_name}"
puts " Initials: #{user.initials}"
puts " Email: #{user.email}"
puts " Password: #{password}"
puts " Confirmed at: #{user.confirmed_at}"
orgs = user.organizations.collect{ |org| org.name }.join(", ")
puts " Member of organizations: #{orgs}"
end
def generate_user_password
require 'securerandom'
SecureRandom.hex(5)
end
def get_user_initials(full_name)
full_name.split(" ").collect{ |n| n.capitalize[0] }.join[0..3]
end
2016-10-13 16:12:11 +08:00
end