authstrategies 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/README.md +79 -75
- data/authstrategies.gemspec +3 -1
- data/lib/authstrategies.rb +6 -6
- data/lib/authstrategies/helpers.rb +2 -2
- data/lib/authstrategies/locales/bg.yml +13 -0
- data/lib/authstrategies/locales/en.yml +13 -0
- data/lib/authstrategies/middleware.rb +12 -3
- data/lib/authstrategies/version.rb +1 -1
- data/lib/authstrategies/views/login.erb +5 -4
- data/lib/authstrategies/views/signup.erb +18 -4
- metadata +37 -7
checksums.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
!binary "U0hBMQ==":
|
|
3
3
|
metadata.gz: !binary |-
|
|
4
|
-
|
|
4
|
+
MjAxN2FiZmE5MmYwZmQ5MTc3YWYyY2ZiYWE4OGY1YjAzN2JlNTQzYw==
|
|
5
5
|
data.tar.gz: !binary |-
|
|
6
|
-
|
|
6
|
+
NWNiNDJkNjUwMTdmYWZjNGI4MTEwODFlMTMyMzhjMGU4MDAxY2EyNQ==
|
|
7
7
|
SHA512:
|
|
8
8
|
metadata.gz: !binary |-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
MGZiNTU3MDAzN2FkNTc3MzRlM2I3NTAxYjE3OTA0NmRlMDU0ZmZkNjcxNmU3
|
|
10
|
+
MGIwNmMyNTg5YjgyNDFhOWFhMjc4OWJiOTQ3ZmRlYTY0M2ZkMjg3YmEwZDRm
|
|
11
|
+
NWVhZGE1NTBlMjI2ZWEyMjU3MTYzYTRlNGVlNjVjYmFkM2ZmZmE=
|
|
12
12
|
data.tar.gz: !binary |-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
ZTlhM2E4MzdhNTYyMjk5MDdiZjM1ZTU4OTY1OThhY2JmZDA5OGZhYzhmZTEw
|
|
14
|
+
OTBhZDc3MzRmZjI1OGZhYjQ3YzM0YmU3YTAxZDU5MGYwNDJkOWEzODg2Y2Zh
|
|
15
|
+
Y2QyY2VlOTRlODBiYmE2Y2M4NDFiZGNiZGY1NmU2MWExZWQyYzc=
|
data/README.md
CHANGED
|
@@ -19,137 +19,141 @@ Or install it yourself as:
|
|
|
19
19
|
## Usage
|
|
20
20
|
|
|
21
21
|
Authstrategies uses sinatra-activerecord as orm. There is currently no rake task to generate a migration for the user model, but you can use the following: (courtesy of device)
|
|
22
|
+
```ruby
|
|
23
|
+
def up
|
|
24
|
+
create_table :users do |t|
|
|
25
|
+
t.string :email, :null => false, :defautl => ""
|
|
26
|
+
t.string :encrypted_password, :null => false, :default => ""
|
|
22
27
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
t.string :email, :null => false, :defautl => ""
|
|
26
|
-
t.string :encrypted_password, :null => false, :default => ""
|
|
28
|
+
t.string :remember_token
|
|
29
|
+
t.boolean :remember_me
|
|
27
30
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
t.timestamps
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
add_index :users, :email, :unique => true
|
|
35
|
-
add_index :users, :remember_token, :unique => true
|
|
36
|
-
end
|
|
31
|
+
t.timestamps
|
|
32
|
+
end
|
|
37
33
|
|
|
34
|
+
add_index :users, :email, :unique => true
|
|
35
|
+
add_index :users, :remember_token, :unique => true
|
|
36
|
+
end
|
|
37
|
+
```
|
|
38
38
|
|
|
39
39
|
After that your application should be configurad similarly to the following:
|
|
40
|
-
|
|
40
|
+
```ruby
|
|
41
41
|
require 'authstrategies'
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
43
|
+
class YourApp < Sinatra::Application
|
|
44
|
+
use Rack::Session::Cookie, {
|
|
45
|
+
:secret => 'such secret many secure wow',
|
|
46
|
+
:expire_after => 3600
|
|
47
|
+
}
|
|
48
|
+
use Rack::Flash
|
|
49
|
+
use Authstrategies::Middleware
|
|
50
|
+
end
|
|
51
|
+
```
|
|
52
52
|
The expire after for Rack::Session::Cookie is optional, but I set it, because
|
|
53
53
|
some modern browsers will not delete session cookies after the user closes his browser like you would normally expect. This may pose a security thread if your users log in from a public computer.
|
|
54
54
|
|
|
55
55
|
If you want to use the helpers provided with authstrategies put:
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
helpers Authstrategies::Helpers
|
|
57
|
+
require 'authstrategies/helpers'
|
|
58
|
+
helpers Authstrategies::Helpers
|
|
60
59
|
|
|
61
60
|
in your code.
|
|
62
61
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
To
|
|
62
|
+
## Helpers
|
|
63
|
+
|
|
64
|
+
authenticate!
|
|
65
|
+
To authenticate a user call
|
|
66
|
+
|
|
67
|
+
authenticated?
|
|
68
|
+
To check if a user is authenticated
|
|
69
|
+
|
|
70
|
+
current_user
|
|
71
|
+
To get the currently logged in user
|
|
72
|
+
|
|
73
|
+
logout
|
|
74
|
+
To logout the user
|
|
75
|
+
|
|
76
|
+
login_path
|
|
77
|
+
returns the login path as a string
|
|
67
78
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
79
|
+
logout_path
|
|
80
|
+
returns the logout path as a string
|
|
81
|
+
|
|
82
|
+
signup_path
|
|
83
|
+
returns the signup path as a string
|
|
71
84
|
|
|
72
85
|
## Callbacks
|
|
73
86
|
|
|
74
87
|
after_set_user
|
|
75
88
|
This is called every time the user is set. The user is set:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
89
|
+
on each request when they are accessed for the first time via env['warden'].user
|
|
90
|
+
when the user is initially authenticated
|
|
91
|
+
when the user is set via the set_user method
|
|
79
92
|
Courtesy of Warden, for more information check the warden callbacks wiki
|
|
80
93
|
|
|
81
94
|
after_authentication
|
|
82
95
|
|
|
83
96
|
Executed every time the user is authenticated
|
|
84
97
|
(first time in each session).
|
|
85
|
-
Courtesy of Warden, for more information check the warden callbacks wiki
|
|
98
|
+
Courtesy of Warden, for more information check the warden callbacks wiki.
|
|
86
99
|
|
|
87
100
|
before_login_failure
|
|
88
101
|
|
|
89
102
|
This callback is run right before the failure application is called.
|
|
90
|
-
Courtesy of Warden, for more information
|
|
91
|
-
check the warden callbacks wiki
|
|
103
|
+
Courtesy of Warden, for more information check the warden callbacks wiki.
|
|
92
104
|
|
|
93
105
|
after_login_failure
|
|
94
106
|
|
|
95
|
-
This is called in the failure application
|
|
96
|
-
Useful for redirecting the user after he logs in
|
|
107
|
+
This is called in the failure application.
|
|
97
108
|
2 params are passed to this callback
|
|
98
|
-
|
|
99
|
-
|
|
109
|
+
request - the request data
|
|
110
|
+
response - the response data
|
|
100
111
|
|
|
101
112
|
before_logout
|
|
102
113
|
|
|
103
114
|
This callback is run before each user is logged out.
|
|
104
|
-
Courtesy of Warden, for more information
|
|
105
|
-
check the warden callbacks wiki
|
|
115
|
+
Courtesy of Warden, for more information check the warden callbacks wiki.
|
|
106
116
|
|
|
107
117
|
after_logout
|
|
108
118
|
|
|
109
119
|
This is called after the user is logged out.
|
|
110
|
-
Useful for redirecting the user after logging out
|
|
111
120
|
2 parameters are passed to this callback
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
after_logout_path
|
|
116
|
-
|
|
117
|
-
This defines a path to redirect the user to
|
|
118
|
-
after he logs out and a flash message to print
|
|
119
|
-
path default is root path
|
|
120
|
-
message default is 'Logged out successfully!'
|
|
121
|
+
request - the request data
|
|
122
|
+
response - the response data
|
|
121
123
|
|
|
122
124
|
after_login
|
|
123
125
|
|
|
124
126
|
This is called each time after the user logs in
|
|
125
127
|
3 parameters are passed to this callback
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
after_login_path
|
|
131
|
-
|
|
132
|
-
This defines a path to redirect the user to
|
|
133
|
-
after he logs in and a flash message to print
|
|
134
|
-
path default is root path
|
|
135
|
-
message default is 'Logged in successfully!'
|
|
128
|
+
current_user - the user that hase just been set
|
|
129
|
+
request - the request data
|
|
130
|
+
response - the response data
|
|
136
131
|
|
|
137
132
|
after_signup
|
|
138
133
|
|
|
139
|
-
This is called after the user is saved into
|
|
140
|
-
the database
|
|
134
|
+
This is called after the user is saved into the database.
|
|
141
135
|
3 parameters are passed to this callback
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
136
|
+
user - the user that just signed up
|
|
137
|
+
request - the request data
|
|
138
|
+
response - the response data
|
|
145
139
|
Also since the user is set to session via env['warden'].set_user
|
|
146
140
|
after_set_user is also called after the user signs up
|
|
147
141
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
142
|
+
## Configuration
|
|
143
|
+
|
|
144
|
+
You can cofigure authstrategies throug:
|
|
145
|
+
```ruby
|
|
146
|
+
Authstrategies::Manager.config do |config|
|
|
147
|
+
config[:after_login_path] = '/' #sets a path to redirect the user after logging in
|
|
148
|
+
config[:after_login_msg] = 'Successfully logged in!' #sets a message to give to the user after he logs in
|
|
149
|
+
|
|
150
|
+
config[:after_logout_path] = '/' #sets a path to redirect the user after logging out
|
|
151
|
+
config[:after_logout_msg] = 'Successfully logged out!' #sets a message to give to the user after he logs out
|
|
152
|
+
|
|
153
|
+
config[:after_signup_path] = '/' #sets a path to redirect the user after he signs up
|
|
154
|
+
config[:after_signup_msg] = 'Successfully signed up!' #sets a message to give to the user after he signs up
|
|
155
|
+
end
|
|
156
|
+
```
|
|
153
157
|
## Contributing
|
|
154
158
|
|
|
155
159
|
1. Fork it
|
data/authstrategies.gemspec
CHANGED
|
@@ -26,6 +26,8 @@ Gem::Specification.new do |spec|
|
|
|
26
26
|
spec.add_runtime_dependency "protected_attributes"
|
|
27
27
|
spec.add_runtime_dependency "warden"
|
|
28
28
|
spec.add_runtime_dependency "bcrypt-ruby"
|
|
29
|
-
spec.add_runtime_dependency "
|
|
29
|
+
spec.add_runtime_dependency "sinatra-flash"
|
|
30
|
+
spec.add_runtime_dependency "i18n"
|
|
31
|
+
spec.add_runtime_dependency "rack-contrib"
|
|
30
32
|
|
|
31
33
|
end
|
data/lib/authstrategies.rb
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
require "authstrategies/version"
|
|
2
2
|
require "warden"
|
|
3
|
-
require "
|
|
3
|
+
require "sinatra/flash"
|
|
4
|
+
require "rack/contrib"
|
|
4
5
|
require "sinatra/base"
|
|
5
6
|
require "active_record"
|
|
6
7
|
require "bcrypt"
|
|
8
|
+
require "i18n"
|
|
9
|
+
require "i18n/backend/fallbacks"
|
|
7
10
|
require "authstrategies/session_serializer.rb"
|
|
8
11
|
require "authstrategies/helpers.rb"
|
|
9
12
|
require "authstrategies/password.rb"
|
|
@@ -16,14 +19,11 @@ module Authstrategies
|
|
|
16
19
|
@@callbacks = {}
|
|
17
20
|
|
|
18
21
|
@@config = {
|
|
19
|
-
:
|
|
20
|
-
:after_login_msg => 'Successfully logged in!',
|
|
22
|
+
:default_locales => :en,
|
|
21
23
|
|
|
24
|
+
:after_login_path => '/',
|
|
22
25
|
:after_logout_path => '/',
|
|
23
|
-
:after_logout_msg => 'Successfully logged out!',
|
|
24
|
-
|
|
25
26
|
:after_signup_path => '/',
|
|
26
|
-
:after_signup_msg => 'Successfully signed up!',
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
def self.registered? hook
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
bg:
|
|
2
|
+
login_msg: Успешен вход в системата!
|
|
3
|
+
logout_msg: Вие излязохте от системата!
|
|
4
|
+
signup_msg: Успешна регистрация!
|
|
5
|
+
email: E-mail
|
|
6
|
+
password: Парола
|
|
7
|
+
remember_me: Запомни ме!
|
|
8
|
+
submit: Изпращане
|
|
9
|
+
not_registered: Нямаш акаунт?
|
|
10
|
+
signup: Регистрация
|
|
11
|
+
confirm: Потвърждаване
|
|
12
|
+
register: Регистрация
|
|
13
|
+
login: Вход
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
en:
|
|
2
|
+
login_msg: Successfully logged in!
|
|
3
|
+
logout_msg: Successgully logged out!
|
|
4
|
+
signup_msg: Successfully signed up!
|
|
5
|
+
email: E-mail
|
|
6
|
+
password: Password
|
|
7
|
+
remember_me: Remember me!
|
|
8
|
+
submit: Submit
|
|
9
|
+
not_registered: Don't have an account?
|
|
10
|
+
signup: Signup
|
|
11
|
+
confirm: Confirm
|
|
12
|
+
register: Register
|
|
13
|
+
login: Log in
|
|
@@ -2,9 +2,18 @@ module Authstrategies
|
|
|
2
2
|
class Middleware < Sinatra::Base
|
|
3
3
|
register Base
|
|
4
4
|
register RememberMe
|
|
5
|
+
register Sinatra::Flash
|
|
6
|
+
|
|
7
|
+
use Rack::Locale
|
|
5
8
|
|
|
6
9
|
include Manager
|
|
7
10
|
|
|
11
|
+
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
|
|
12
|
+
I18n.load_path = Dir[File.join(File.dirname(__FILE__)+'/locales', '*.yml')]
|
|
13
|
+
I18n.backend.load_translations
|
|
14
|
+
I18n.enforce_available_locales = true
|
|
15
|
+
I18n.default_locale = Manager.config[:default_locales]
|
|
16
|
+
|
|
8
17
|
get '/login/?' do
|
|
9
18
|
redirect '/' if authenticated?
|
|
10
19
|
erb :login
|
|
@@ -22,7 +31,7 @@ module Authstrategies
|
|
|
22
31
|
)
|
|
23
32
|
end
|
|
24
33
|
Manager.call :after_login, [current_user, request, response]
|
|
25
|
-
flash[:notice] =
|
|
34
|
+
flash[:notice] = I18n.t 'login_msg'
|
|
26
35
|
redirect Manager.config[:after_login_path]
|
|
27
36
|
end
|
|
28
37
|
end
|
|
@@ -39,7 +48,7 @@ module Authstrategies
|
|
|
39
48
|
user.save
|
|
40
49
|
env['warden'].set_user(user)
|
|
41
50
|
Manager.call :after_signup, [user, request, response]
|
|
42
|
-
flash[:notice] =
|
|
51
|
+
flash[:notice] = I18n.t 'signup_msg'
|
|
43
52
|
redirect Manager.config[:after_signup_path]
|
|
44
53
|
else
|
|
45
54
|
flash[:error] = user.errors.messages
|
|
@@ -53,7 +62,7 @@ module Authstrategies
|
|
|
53
62
|
response.delete_cookie("authstrategies")
|
|
54
63
|
logout
|
|
55
64
|
Manager.call :after_logout, [request, response]
|
|
56
|
-
flash[:notice] =
|
|
65
|
+
flash[:notice] = I18n.t 'logout_msg'
|
|
57
66
|
redirect Manager.config[:after_logout_path]
|
|
58
67
|
end
|
|
59
68
|
redirect '/'
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
<%= flash[:error] %>
|
|
2
2
|
<%= flash[:notice] %>
|
|
3
3
|
<form action="login" method="post">
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
<p><%= I18n.t 'email' %>:<input type="email" name="email" required/></p>
|
|
5
|
+
<p><%= I18n.t 'password' %>:<input type="password" name="password" required/></p>
|
|
6
|
+
<p><%= I18n.t 'remember_me' %> <input type="checkbox" name="remember_me" /></p>
|
|
7
|
+
<p><input type="submit" value=<%= I18n.t 'submit' %> /></p>
|
|
8
|
+
<%= I18n.t 'not_registered' %><a href=<%= signup_path%>><%= I18n.t 'signup' %></a>
|
|
8
9
|
</form>
|
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
<%= flash[:error] %>
|
|
2
2
|
<%= flash[:notice] %>
|
|
3
3
|
<form action="signup" method="post">
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
<table border="0">
|
|
5
|
+
<tr>
|
|
6
|
+
<td><%= I18n.t 'email' %>:</td>
|
|
7
|
+
<td><input type="email" name="email" required/></td>
|
|
8
|
+
</tr>
|
|
9
|
+
<tr>
|
|
10
|
+
<td><%= I18n.t 'password' %>:</td>
|
|
11
|
+
<td><input type="password" name="password" required/></td>
|
|
12
|
+
</tr>
|
|
13
|
+
<tr>
|
|
14
|
+
<td><%= I18n.t 'confirm' %>:</td>
|
|
15
|
+
<td><input type="password" name="password_confirmation" /></td>
|
|
16
|
+
</tr>
|
|
17
|
+
<tr>
|
|
18
|
+
<td><input type="submit" value=<%= I18n.t 'register' %> /></td>
|
|
19
|
+
</tr>
|
|
20
|
+
</table>
|
|
8
21
|
</form>
|
|
22
|
+
<%= I18n.t 'already_registered' %> <a href=<%= login_path %>><%= I18n.t 'login' %></a>
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: authstrategies
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dobromir Ivanov
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-
|
|
11
|
+
date: 2014-02-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -109,19 +109,47 @@ dependencies:
|
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
110
|
version: '0'
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name:
|
|
112
|
+
name: sinatra-flash
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
114
114
|
requirements:
|
|
115
|
-
- - '
|
|
115
|
+
- - ! '>='
|
|
116
|
+
- !ruby/object:Gem::Version
|
|
117
|
+
version: '0'
|
|
118
|
+
type: :runtime
|
|
119
|
+
prerelease: false
|
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
+
requirements:
|
|
122
|
+
- - ! '>='
|
|
123
|
+
- !ruby/object:Gem::Version
|
|
124
|
+
version: '0'
|
|
125
|
+
- !ruby/object:Gem::Dependency
|
|
126
|
+
name: i18n
|
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
|
128
|
+
requirements:
|
|
129
|
+
- - ! '>='
|
|
130
|
+
- !ruby/object:Gem::Version
|
|
131
|
+
version: '0'
|
|
132
|
+
type: :runtime
|
|
133
|
+
prerelease: false
|
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
+
requirements:
|
|
136
|
+
- - ! '>='
|
|
116
137
|
- !ruby/object:Gem::Version
|
|
117
|
-
version:
|
|
138
|
+
version: '0'
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: rack-contrib
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - ! '>='
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: '0'
|
|
118
146
|
type: :runtime
|
|
119
147
|
prerelease: false
|
|
120
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
149
|
requirements:
|
|
122
|
-
- - '
|
|
150
|
+
- - ! '>='
|
|
123
151
|
- !ruby/object:Gem::Version
|
|
124
|
-
version:
|
|
152
|
+
version: '0'
|
|
125
153
|
description: AuthStrategies is a Warden implementation for sinatra.
|
|
126
154
|
email:
|
|
127
155
|
- dobromir0ivanov@gmail.com
|
|
@@ -137,6 +165,8 @@ files:
|
|
|
137
165
|
- authstrategies.gemspec
|
|
138
166
|
- lib/authstrategies.rb
|
|
139
167
|
- lib/authstrategies/helpers.rb
|
|
168
|
+
- lib/authstrategies/locales/bg.yml
|
|
169
|
+
- lib/authstrategies/locales/en.yml
|
|
140
170
|
- lib/authstrategies/middleware.rb
|
|
141
171
|
- lib/authstrategies/models/user.rb
|
|
142
172
|
- lib/authstrategies/password.rb
|