Skip to content
Snippets Groups Projects
Verified Commit a73df4f7 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

Allow oauth signup without email

parent 4e002a71
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -11,6 +11,7 @@ class ApplicationController < ActionController::Base
before_filter :default_headers
before_filter :add_gon_variables
before_filter :configure_permitted_parameters, if: :devise_controller?
before_filter :require_email
 
protect_from_forgery
 
Loading
Loading
@@ -234,4 +235,10 @@ class ApplicationController < ActionController::Base
def hexdigest(string)
Digest::SHA1.hexdigest string
end
def require_email
if current_user && current_user.temp_oauth_email?
redirect_to profile_path, notice: 'Please complete your profile with email address' and return
end
end
end
Loading
Loading
@@ -8,7 +8,7 @@ class Profiles::EmailsController < ApplicationController
 
def create
@email = current_user.emails.new(params[:email])
flash[:alert] = @email.errors.full_messages.first unless @email.save
 
redirect_to profile_emails_url
Loading
Loading
Loading
Loading
@@ -3,6 +3,7 @@ class ProfilesController < ApplicationController
 
before_filter :user
before_filter :authorize_change_username!, only: :update_username
skip_before_filter :require_email, only: [:show, :update]
 
layout 'profile'
 
Loading
Loading
Loading
Loading
@@ -462,4 +462,12 @@ class User < ActiveRecord::Base
def all_ssh_keys
keys.map(&:key)
end
def temp_oauth_email?
email =~ /\Atemp-email-for-oauth/
end
def generate_tmp_oauth_email
self.email = "temp-email-for-oauth-#{username}"
end
end
Loading
Loading
@@ -30,7 +30,10 @@
%span.help-block.light
Email is read-only for LDAP user
- else
= f.text_field :email, class: "form-control", required: true
- if @user.temp_oauth_email?
= f.text_field :email, class: "form-control", required: true, value: nil
- else
= f.text_field :email, class: "form-control", required: true
- if @user.unconfirmed_email.present?
%span.help-block
We sent confirmation email to
Loading
Loading
Loading
Loading
@@ -29,7 +29,13 @@ module Gitlab
 
user = model.build_user(opts, as: :admin)
user.skip_confirmation!
user.save!
if user.email.blank?
user.generate_tmp_oauth_email
end
user.save!(validate: false)
log.info "(OAuth) Creating user #{email} from login with extern_uid => #{uid}"
 
if Gitlab.config.omniauth['block_auto_created_users'] && !ldap?
Loading
Loading
@@ -58,7 +64,7 @@ module Gitlab
end
 
def username
email.match(/^[^@]*/)[0]
auth.info.nickname.to_s.force_encoding("utf-8")
end
 
def provider
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment