Commit d6a0b8f42881964b9e57ad1dde4918e74aea0ed0
1 parent
d885f24f
Exists in
master
and in
4 other branches
LDAP done
Showing
6 changed files
with
37 additions
and
24 deletions
Show diff stats
... | ... | @@ -0,0 +1,13 @@ |
1 | +class OmniauthCallbacksController < Devise::OmniauthCallbacksController | |
2 | + | |
3 | + def ldap | |
4 | + # We only find ourselves here if the authentication to LDAP was successful. | |
5 | + omniauth = request.env["omniauth.auth"]["extra"]["raw_info"] | |
6 | + @user = User.find_for_ldap_auth(omniauth) | |
7 | + if @user.persisted? | |
8 | + @user.remember_me = true | |
9 | + end | |
10 | + sign_in_and_redirect @user | |
11 | + end | |
12 | + | |
13 | +end | ... | ... |
app/controllers/users/omniauth_callbacks_controller.rb
... | ... | @@ -1,22 +0,0 @@ |
1 | -class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController | |
2 | - | |
3 | - def ldap | |
4 | - # We only find ourselves here if the authentication to LDAP was successful. | |
5 | - ldap = request.env["omniauth.auth"]["extra"]["raw_info"] | |
6 | - username = ldap.sAMAccountName[0].to_s | |
7 | - email = ldap.proxyaddresses[0][5..-1].to_s | |
8 | - | |
9 | - if @user = User.find_by_email(email) | |
10 | - sign_in_and_redirect root_path | |
11 | - else | |
12 | - password = User.generate_random_password | |
13 | - @user = User.create(:name => username, | |
14 | - :email => email, | |
15 | - :password => password, | |
16 | - :password_confirmation => password | |
17 | - ) | |
18 | - sign_in_and_redirect @user | |
19 | - end | |
20 | - end | |
21 | - | |
22 | -end |
app/helpers/application_helper.rb
app/models/user.rb
... | ... | @@ -66,6 +66,22 @@ class User < ActiveRecord::Base |
66 | 66 | def self.generate_random_password |
67 | 67 | (0...8).map{ ('a'..'z').to_a[rand(26)] }.join |
68 | 68 | end |
69 | + | |
70 | + def self.find_for_ldap_auth(omniauth) | |
71 | + username = omniauth.sAMAccountName[0] | |
72 | + email = omniauth.userprincipalname[0] | |
73 | + | |
74 | + if @user = User.find_by_email(email) | |
75 | + @user | |
76 | + else | |
77 | + password = generate_random_password | |
78 | + @user = User.create(:name => username, | |
79 | + :email => email, | |
80 | + :password => password, | |
81 | + :password_confirmation => password | |
82 | + ) | |
83 | + end | |
84 | + end | |
69 | 85 | end |
70 | 86 | # == Schema Information |
71 | 87 | # | ... | ... |
app/views/devise/sessions/new.html.erb
... | ... | @@ -9,5 +9,7 @@ |
9 | 9 | <br/> |
10 | 10 | <%= f.submit "Sign in", :class => "grey-button" %> |
11 | 11 | <div class="right"> <%= render :partial => "devise/shared/links" %></div> |
12 | - <%= user_omniauth_authorize_path(:ldap)%> | |
12 | + <% if ldap_enable? -%> | |
13 | + <p><%= link_to "via LDAP", user_omniauth_authorize_path(:ldap)%></p> | |
14 | + <% end -%> | |
13 | 15 | <% end %> | ... | ... |
config/routes.rb
... | ... | @@ -39,7 +39,7 @@ Gitlab::Application.routes.draw do |
39 | 39 | resources :projects, :constraints => { :id => /[^\/]+/ }, :only => [:new, :create, :index] |
40 | 40 | resources :keys |
41 | 41 | |
42 | - devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } | |
42 | + devise_for :users, :controllers => { :omniauth_callbacks => :omniauth_callbacks } | |
43 | 43 | |
44 | 44 | resources :projects, :constraints => { :id => /[^\/]+/ }, :except => [:new, :create, :index], :path => "/" do |
45 | 45 | member do | ... | ... |