Fix name-typo in NEWS
[coquelicot.git] / lib / coquelicot / auth.rb
1 # -*- coding: UTF-8 -*-
2 # Coquelicot: "one-click" file sharing with a focus on users' privacy.
3 # Copyright © 2012-2013 potager.org <jardiniers@potager.org>
4 #           © 2011 mh / immerda.ch <mh+coquelicot@immerda.ch>
5 #
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU Affero General Public License as
8 # published by the Free Software Foundation, either version 3 of the
9 # License, or (at your option) any later version.
10 #
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU Affero General Public License for more details.
15 #
16 # You should have received a copy of the GNU Affero General Public License
17 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
19 module Coquelicot
20   module Auth
21     module Extension
22       def authentication_method=(options)
23         method = options.delete('name') || options.delete(:name)
24         method = method.to_s if method.is_a? Symbol
25
26         require "coquelicot/auth/#{method}"
27         set :authenticator, Coquelicot::Auth.
28            const_get("#{method.to_s.capitalize}Authenticator").new(self)
29
30         options.each{|k,v| set k,v }
31       end
32     end
33
34     class Error < StandardError; end
35
36     class AbstractAuthenticator
37       def initialize(app)
38         @app = app
39       end
40
41       def settings
42         @app
43       end
44
45       def authenticate(params)
46         raise NotImplementedError.new('Authenticator needs to override the `authenticate` method!')
47       end
48     end
49   end
50 end