forgeplus/app/controllers/concerns/register_helper.rb

41 lines
1.3 KiB
Ruby

module RegisterHelper
extend ActiveSupport::Concern
def autologin_register(username, email, password, platform= 'forge')
user = User.new(admin: false, login: username, mail: email, type: "User")
user.password = password
user.platform = platform
user.activate
return unless user.valid?
create_gitea_user!(user, username, email, password)
end
def create_gitea_user!(forge_user, username, email, password=random_password)
result = {message: nil, user: nil}
interactor = Gitea::RegisterInteractor.call({username: username, email: email, password: password})
if interactor.success?
gitea_user = interactor.result
Rails.logger.info "##### [gitea] create_gitea_user result: #{gitea_user}"
result = Gitea::User::GenerateTokenService.call(username, password)
forge_user.gitea_token = result['sha1']
forge_user.gitea_uid = gitea_user[:body]['id']
forge_user.mail = email
if forge_user.save
UserExtension.create!(user_id: forge_user.id) if forge_user.user_extension.blank?
result[:user] = {id: forge_user.id, token: forge_user.gitea_token}
end
else
Rails.logger.info "##### [gitea] create_gitea_user result: #{interactor.error}"
result[:message] = interactor.error
end
result
end
def random_password
"#{Random.rand(11111111)}"
end
end