entrance 0.5.3 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/examples/sinatra-app/app/routes.rb +0 -2
- data/lib/entrance/addons/omniauth.rb +16 -9
- data/lib/entrance/fields.rb +2 -2
- data/lib/entrance/version.rb +2 -2
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 538d36c02daa5e94fb32097d12e8866d3d64bc3a
|
4
|
+
data.tar.gz: bd49b081f1c840cfc6a1b76b95b4bba009cf37e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10219873d111c01af05ca8e0fb3b7392f3416eeb7149d13ffe15544239d7d0dd35e02a76d4277e95d6642a75cb11374ead3baad47d2711f27f187e4284db9869
|
7
|
+
data.tar.gz: 4260f27c3f752a887e666b65e905f7aed5468a13df1f35d7272d177f475b2a2133c644ec33de5dfafc6f9d803197c3984a968c57c640dd4dd7b5daba84bf47ba
|
data/README.md
CHANGED
@@ -43,8 +43,6 @@ module Example
|
|
43
43
|
post '/login' do
|
44
44
|
if user = User.authenticate(params[:email], params[:password]) and user.active?
|
45
45
|
remember = ['on', '1'].include?(params[:remember_me])
|
46
|
-
|
47
|
-
puts user.inspect
|
48
46
|
login!(user, remember)
|
49
47
|
|
50
48
|
flash[:success] = 'Welcome back!'
|
@@ -10,8 +10,10 @@ require 'entrance/addons/omniauth'
|
|
10
10
|
class Hello < Sinatra::Base
|
11
11
|
register Entrance::OmniAuth
|
12
12
|
|
13
|
+
set :sessions, true
|
13
14
|
set :auth_test, false # only true for testing
|
14
15
|
set :auth_remember, true # enables 'remember me' for omniauth logins
|
16
|
+
set :auth_redirect, '/' # where to redirect on successful login
|
15
17
|
set :auth_providers, {
|
16
18
|
:twitter => {
|
17
19
|
:key => 'foobar'
|
@@ -57,8 +59,9 @@ module Entrance
|
|
57
59
|
[:get, :post].each do |action|
|
58
60
|
|
59
61
|
app.send(action, '/auth/:provider/callback') do
|
60
|
-
auth
|
61
|
-
|
62
|
+
auth = request.env['omniauth.auth']
|
63
|
+
params = request.env["omniauth.params"]
|
64
|
+
unless user = ::Entrance::OmniAuth.auth_or_create(auth, params)
|
62
65
|
# return return_401
|
63
66
|
redirect_with(Entrance.config.access_denied_redirect_to, :error, 'Unable to create record for new user. Check the log file.')
|
64
67
|
end
|
@@ -66,7 +69,7 @@ module Entrance
|
|
66
69
|
if ::Entrance::OmniAuth.valid_user?(user)
|
67
70
|
login!(user, app.settings.auth_remember)
|
68
71
|
flash[:success] = 'Welcome back!' if respond_to?(:flash)
|
69
|
-
redirect_to_stored_or(to(
|
72
|
+
redirect_to_stored_or(to(app.settings.auth_redirect))
|
70
73
|
else
|
71
74
|
redirect_with(Entrance.config.access_denied_redirect_to, :error, 'Unable to authenticate. Please try again.')
|
72
75
|
end
|
@@ -89,6 +92,10 @@ module Entrance
|
|
89
92
|
def log(str)
|
90
93
|
logger.info(str) rescue nil
|
91
94
|
end
|
95
|
+
|
96
|
+
def omniauth_params
|
97
|
+
@omniauth_params
|
98
|
+
end
|
92
99
|
|
93
100
|
def valid_user?(user)
|
94
101
|
if user.respond_to?(:can_login?) and !user.can_login?
|
@@ -105,14 +112,14 @@ module Entrance
|
|
105
112
|
def find_user_with_username(username)
|
106
113
|
query = {}
|
107
114
|
query[::Entrance.fields.username] = username # .to_s.downcase.strip
|
108
|
-
|
115
|
+
scoped_model.where(query).first
|
109
116
|
end
|
110
117
|
|
111
118
|
def find_user_with_provider_and_uid(provider, uid)
|
112
119
|
query = {}
|
113
120
|
query[::Entrance.fields.auth_provider] = provider
|
114
121
|
query[::Entrance.fields.auth_uid] = uid
|
115
|
-
|
122
|
+
scoped_model.where(query).first
|
116
123
|
end
|
117
124
|
|
118
125
|
def set_auth_credentials(user, provider, uid)
|
@@ -129,14 +136,12 @@ module Entrance
|
|
129
136
|
data = {}
|
130
137
|
data[::Entrance.fields.name] = name
|
131
138
|
data[::Entrance.fields.username] = email
|
132
|
-
user =
|
139
|
+
user = scoped_model.new(data)
|
133
140
|
set_auth_credentials(user, provider, uid)
|
134
141
|
|
135
142
|
if user.valid?
|
136
143
|
return user.save && user
|
137
144
|
else
|
138
|
-
puts user.inspect
|
139
|
-
puts user.local?
|
140
145
|
log "Invalid user: #{user.errors.to_a.join(', ')}"
|
141
146
|
false
|
142
147
|
end
|
@@ -144,7 +149,9 @@ module Entrance
|
|
144
149
|
|
145
150
|
# authorizes or creates a user with the given oauth credentials.
|
146
151
|
# does not check if user is banned or not (the /callback route does that)
|
147
|
-
def auth_or_create(auth)
|
152
|
+
def auth_or_create(auth, params = {})
|
153
|
+
@omniauth_params = params
|
154
|
+
|
148
155
|
provider, uid = auth['provider'], auth['uid']
|
149
156
|
info = auth['info'] || {}
|
150
157
|
|
data/lib/entrance/fields.rb
CHANGED
@@ -15,9 +15,9 @@ module Entrance
|
|
15
15
|
@password = 'password_hash'
|
16
16
|
|
17
17
|
# remember and reset
|
18
|
-
@remember_token = 'remember_token'
|
18
|
+
@remember_token = 'remember_token' # set to nil to disable 'remember me' option
|
19
19
|
@remember_until = 'remember_token_expires_at'
|
20
|
-
@reset_token = 'reset_token'
|
20
|
+
@reset_token = 'reset_token' # set to nil to disable 'reset password' option
|
21
21
|
@reset_until = 'reset_token_expires_at'
|
22
22
|
|
23
23
|
# omniauth
|
data/lib/entrance/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: entrance
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomás Pollak
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bcrypt
|
@@ -146,9 +146,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
146
|
version: 1.3.6
|
147
147
|
requirements: []
|
148
148
|
rubyforge_project: entrance
|
149
|
-
rubygems_version: 2.
|
149
|
+
rubygems_version: 2.6.13
|
150
150
|
signing_key:
|
151
151
|
specification_version: 4
|
152
152
|
summary: Lean authentication alternative for Rails and Sinatra.
|
153
153
|
test_files: []
|
154
|
-
has_rdoc:
|