I don't care if we have a company LDAP. My thoughts go out to devs* who don't have that. *OpenSource, right?pull/3480/head
parent
b7b613f86f
commit
45153a5d1b
@ -0,0 +1,39 @@ |
||||
class DummyAuthSource < AuthSource |
||||
def test_connection |
||||
# the dummy connection is always available |
||||
end |
||||
|
||||
def authenticate(login, password) |
||||
existing_user(login, password) || on_the_fly_user(login) |
||||
end |
||||
|
||||
def auth_method_name |
||||
'DerpLAP' |
||||
end |
||||
|
||||
private |
||||
|
||||
def existing_user(login, password) |
||||
registered_login?(login) && password == 'dummy' |
||||
end |
||||
|
||||
def on_the_fly_user(login) |
||||
return nil unless onthefly_register? |
||||
|
||||
{ |
||||
firstname: login.capitalize, |
||||
lastname: 'Dummy', |
||||
mail: 'login@DerpLAP.net', |
||||
auth_source_id: self.id |
||||
} |
||||
end |
||||
|
||||
def registered_login?(login) |
||||
not users.where(login: login).empty? # empty? to use EXISTS query |
||||
end |
||||
|
||||
# Does this auth source backend allow password changes? |
||||
def self.allow_password_changes? |
||||
false |
||||
end |
||||
end |
@ -0,0 +1,60 @@ |
||||
#-- encoding: UTF-8 |
||||
#-- copyright |
||||
# OpenProject is a project management system. |
||||
# Copyright (C) 2012-2015 the OpenProject Foundation (OPF) |
||||
# |
||||
# This program is free software; you can redistribute it and/or |
||||
# modify it under the terms of the GNU General Public License version 3. |
||||
# |
||||
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: |
||||
# Copyright (C) 2006-2013 Jean-Philippe Lang |
||||
# Copyright (C) 2010-2013 the ChiliProject Team |
||||
# |
||||
# This program is free software; you can redistribute it and/or |
||||
# modify it under the terms of the GNU General Public License |
||||
# as published by the Free Software Foundation; either version 2 |
||||
# of the License, or (at your option) any later version. |
||||
# |
||||
# This program is distributed in the hope that it will be useful, |
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
# GNU General Public License for more details. |
||||
# |
||||
# You should have received a copy of the GNU General Public License |
||||
# along with this program; if not, write to the Free Software |
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
||||
# |
||||
# See doc/COPYRIGHT.rdoc for more details. |
||||
#++ |
||||
|
||||
desc 'Creates a dummy LDAP auth source for logging in any user using the password "dummy".' |
||||
namespace :ldap do |
||||
task create_dummy: :environment do |
||||
source_name = 'DerpLAP' |
||||
otf_reg = ARGV.include?('onthefly_register') |
||||
|
||||
source = DummyAuthSource.create name: source_name, onthefly_register: otf_reg |
||||
|
||||
puts |
||||
if source.valid? |
||||
puts "Created dummy auth source called \"#{source_name}\"" |
||||
puts 'On-the-fly registration support: ' + otf_reg.to_s |
||||
unless otf_reg |
||||
puts "use `rake ldap:create_dummy[onthefly_register]` to enable on-the-fly registration" |
||||
end |
||||
else |
||||
puts "Dummy auth source already exists. It's called \"#{source_name}\"." |
||||
end |
||||
|
||||
puts |
||||
puts 'Note: Dummy auth sources cannot be edited, so clicking on them' |
||||
puts " in the 'LDAP Authentication' view will result in an error. Bummer!" |
||||
end |
||||
|
||||
task delete_dummies: :environment do |
||||
DummyAuthSource.destroy_all |
||||
|
||||
puts |
||||
puts 'Deleted all dummy auth sources. Users who used it are out of luck! :o' |
||||
end |
||||
end |
Loading…
Reference in new issue