dummy LDAP auth source

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
Markus Kahl 9 years ago
parent b7b613f86f
commit 45153a5d1b
  1. 39
      app/models/dummy_auth_source.rb
  2. 60
      lib/tasks/ldap.rake

@ -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…
Cancel
Save