sixarm_ruby_sign_in 1.1.6
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 +7 -0
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.gemtest +0 -0
- data/CHANGES.md +5 -0
- data/LICENSE.md +28 -0
- data/README.md +94 -0
- data/Rakefile +8 -0
- data/VERSION +1 -0
- data/lib/sixarm_ruby_sign_in.rb +65 -0
- data/test/sixarm_ruby_sign_in_test.rb +52 -0
- metadata +92 -0
- metadata.gz.sig +0 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1f659858417539c4678e22ecba4172b21bbd4a0a
|
4
|
+
data.tar.gz: bd618ffe352b1a7629ae0c668e56c2f5ee242d61
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 52cf29c31bf1418d9bf6e83eb8e483264d65cf1d3cc438477d3b8fbcb3bc0ea3e9e98cc71923d2a8911f06c4596fd618d2c72314cf3b1401d490b985232aa7b9
|
7
|
+
data.tar.gz: 96807e46ca5cdafd51bd7e40e9ac5efe8e47fee4530163d8ae5b78b3473f3ebeb57245a43345d08a0e92f629dbd3df6c22882a5b03ba0438cff2fba5c2effb17
|
checksums.yaml.gz.sig
ADDED
Binary file
|
data.tar.gz.sig
ADDED
Binary file
|
data/.gemtest
ADDED
File without changes
|
data/CHANGES.md
ADDED
data/LICENSE.md
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# License
|
2
|
+
|
3
|
+
You may choose any of these open source licenses:
|
4
|
+
|
5
|
+
* Apache License
|
6
|
+
* BSD License
|
7
|
+
* CreativeCommons License, Non-commercial Share Alike
|
8
|
+
* GNU Affero General Public License (AGPL)
|
9
|
+
* GNU General Public License Version (GPL)
|
10
|
+
* GNU Lesser General Public License (LGPL)
|
11
|
+
* MIT License
|
12
|
+
* Perl Artistic License
|
13
|
+
* Ruby License
|
14
|
+
|
15
|
+
The software is provided "as is", without warranty of any kind,
|
16
|
+
express or implied, including but not limited to the warranties of
|
17
|
+
merchantability, fitness for a particular purpose and noninfringement.
|
18
|
+
|
19
|
+
In no event shall the authors or copyright holders be liable for any
|
20
|
+
claim, damages or other liability, whether in an action of contract,
|
21
|
+
tort or otherwise, arising from, out of or in connection with the
|
22
|
+
software or the use or other dealings in the software.
|
23
|
+
|
24
|
+
This license is for the included software that is created by SixArm.
|
25
|
+
Some of the included software may have its own licenses, copyrights,
|
26
|
+
authors, etc. and these may take precedence over the SixArm license.
|
27
|
+
|
28
|
+
Copyright (c) Joel Parker Henderson
|
data/README.md
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
# Ruby » <br> SignIn interface for typical Rails user sign in
|
2
|
+
|
3
|
+
* Doc: <http://sixarm.com/sixarm_ruby_sign_in/doc>
|
4
|
+
* Gem: <http://rubygems.org/gems/sixarm_ruby_sign_in>
|
5
|
+
* Repo: <http://github.com/sixarm/sixarm_ruby_sign_in>
|
6
|
+
* Email: Joel Parker Henderson, <joel@sixarm.com>
|
7
|
+
|
8
|
+
|
9
|
+
## Introduction
|
10
|
+
|
11
|
+
Sign In simple abstract framework.
|
12
|
+
|
13
|
+
You can include this module in your application controller,
|
14
|
+
then your controller can define any of these concrete methods.
|
15
|
+
|
16
|
+
For docs go to <http://sixarm.com/sixarm_ruby_sign_in/doc>
|
17
|
+
|
18
|
+
Want to help? We're happy to get pull requests.
|
19
|
+
|
20
|
+
|
21
|
+
## Install quickstart
|
22
|
+
|
23
|
+
Install:
|
24
|
+
|
25
|
+
gem install sixarm_ruby_sign_in
|
26
|
+
|
27
|
+
Bundler:
|
28
|
+
|
29
|
+
gem "sixarm_ruby_sign_in", "~>1.1.4"
|
30
|
+
|
31
|
+
Require:
|
32
|
+
|
33
|
+
require "sixarm_ruby_sign_in"
|
34
|
+
|
35
|
+
|
36
|
+
## Install with security (optional)
|
37
|
+
|
38
|
+
To enable high security for all our gems:
|
39
|
+
|
40
|
+
wget http://sixarm.com/sixarm.pem
|
41
|
+
gem cert --add sixarm.pem
|
42
|
+
gem sources --add http://sixarm.com
|
43
|
+
|
44
|
+
To install with high security:
|
45
|
+
|
46
|
+
gem install sixarm_ruby_sign_in --trust-policy HighSecurity
|
47
|
+
|
48
|
+
|
49
|
+
## Details
|
50
|
+
|
51
|
+
This provides one top-level method:
|
52
|
+
|
53
|
+
sign_in(options=nil) => true for success, false for failure
|
54
|
+
|
55
|
+
The top level method will call mid-level methods
|
56
|
+
that you will define in your own controller.
|
57
|
+
|
58
|
+
sign_in calls:
|
59
|
+
|
60
|
+
sign_in_attempt(options=nil), e.g. authenticate and set current user
|
61
|
+
sign_in_success(options=nil), e.g. redirect to a welcome page
|
62
|
+
sign_in_failure(options=nil), e.g. flash notice help messesage
|
63
|
+
|
64
|
+
|
65
|
+
## AuthLogic Example
|
66
|
+
|
67
|
+
AuthLogic provides this example:
|
68
|
+
|
69
|
+
def create
|
70
|
+
# sign in attempt
|
71
|
+
@user_session = UserSession.new(params[:user_session])
|
72
|
+
if @user_session.save
|
73
|
+
# sign in success
|
74
|
+
redirect_to account_url
|
75
|
+
else
|
76
|
+
# sign in failure
|
77
|
+
render :action => :new
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
AuthLogic example refactored for improved security and structure:
|
82
|
+
|
83
|
+
def sign_in_attempt
|
84
|
+
@user_session = UserSession.new(params[:user_session])
|
85
|
+
@user_session.save
|
86
|
+
end
|
87
|
+
|
88
|
+
def sign_in_success
|
89
|
+
redirect_to account_url
|
90
|
+
end
|
91
|
+
|
92
|
+
def sign_in_failure
|
93
|
+
render :action => :new
|
94
|
+
end
|
data/Rakefile
ADDED
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.1.4
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
=begin rdoc
|
3
|
+
Please see README
|
4
|
+
=end
|
5
|
+
|
6
|
+
|
7
|
+
module SignIn
|
8
|
+
|
9
|
+
|
10
|
+
# The sign_in method calls:
|
11
|
+
# - sign_in_attempt
|
12
|
+
# - sign_in_success (if sign_in_attempt returns true)
|
13
|
+
# - sign_in_failure (if sign_in_attempt returns false or raises a SecurityError)
|
14
|
+
|
15
|
+
def sign_in(options=nil)
|
16
|
+
begin
|
17
|
+
sign_in_attempt(options) or raise SecurityError
|
18
|
+
sign_in_success(options)
|
19
|
+
return true
|
20
|
+
rescue SecurityError
|
21
|
+
sign_in_failure(options)
|
22
|
+
return false
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
# The sign_in method calls this first.
|
28
|
+
#
|
29
|
+
# You override this method to e.g.:
|
30
|
+
# - get a username and password from params
|
31
|
+
# - find the user by username in the user model
|
32
|
+
# - authenticate the user by verifying the password
|
33
|
+
#
|
34
|
+
# If this method succeeds, then control goes to sign_in_success.
|
35
|
+
#
|
36
|
+
# If this method raises an error, then control goes to sign_in_failure.
|
37
|
+
|
38
|
+
def sign_in_attempt(options=nil)
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
# The sign_in method calls this second,
|
43
|
+
# iff sign_in_attempt succeeds.
|
44
|
+
#
|
45
|
+
# You override this method to e.g.:
|
46
|
+
# - show the user a flash notice message saying "Welcome..."
|
47
|
+
# - redirect to the user's home page
|
48
|
+
# - customize views based on the user's info
|
49
|
+
|
50
|
+
def sign_in_success(options=nil)
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
# The sign_in method calls this second,
|
55
|
+
# iff sign_in_attempt raises an exception.
|
56
|
+
#
|
57
|
+
# You override this method to e.g.:
|
58
|
+
# - show the user a flash warning message saying "Sorry..."
|
59
|
+
# - redirect to a help page
|
60
|
+
# - log the attempt and possibly see if it's a hacker
|
61
|
+
|
62
|
+
def sign_in_failure(options=nil)
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require "minitest/autorun"
|
3
|
+
require "simplecov"
|
4
|
+
SimpleCov.start
|
5
|
+
require "sixarm_ruby_sign_in"
|
6
|
+
|
7
|
+
class SignInTest < Test::Unit::TestCase
|
8
|
+
|
9
|
+
include SignIn
|
10
|
+
|
11
|
+
RIGHT=:foo
|
12
|
+
WRONG=:bar
|
13
|
+
|
14
|
+
def setup
|
15
|
+
@sign_in_attempt_seen=nil
|
16
|
+
@sign_in_success_seen=nil
|
17
|
+
@sign_in_failure_seen=nil
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_sign_in_right
|
21
|
+
user=RIGHT
|
22
|
+
x=sign_in(user)
|
23
|
+
assert( @sign_in_attempt_seen,"sign_in_attempt_seen user:#{user}")
|
24
|
+
assert( @sign_in_success_seen,"sign_in_success_seen user:#{user}")
|
25
|
+
assert(!@sign_in_failure_seen,"sign_in_failure_seen user:#{user}")
|
26
|
+
assert_equal(true,x,"sign_in x:#{x}")
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_sign_in_wrong
|
30
|
+
user=WRONG
|
31
|
+
x=sign_in(user)
|
32
|
+
assert( @sign_in_attempt_seen,"sign_in_attempt seen user:#{user}")
|
33
|
+
assert(!@sign_in_success_seen,"sign_in_success_seen user:#{user}")
|
34
|
+
assert( @sign_in_failure_seen,"sign_in_failure_seen user:#{user}")
|
35
|
+
assert_equal(false,x,"sign_in user:#{x}")
|
36
|
+
end
|
37
|
+
|
38
|
+
def sign_in_attempt(options=nil)
|
39
|
+
@sign_in_attempt_seen=true
|
40
|
+
if options==WRONG then raise SecurityError end
|
41
|
+
return options==RIGHT
|
42
|
+
end
|
43
|
+
|
44
|
+
def sign_in_success(options=nil)
|
45
|
+
@sign_in_success_seen=true
|
46
|
+
end
|
47
|
+
|
48
|
+
def sign_in_failure(options=nil)
|
49
|
+
@sign_in_failure_seen=true
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
metadata
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sixarm_ruby_sign_in
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.6
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- SixArm
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
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
|
45
|
+
n+ES/gQPOnvmVkLDGw==
|
46
|
+
-----END CERTIFICATE-----
|
47
|
+
date: 2015-07-08 00:00:00.000000000 Z
|
48
|
+
dependencies: []
|
49
|
+
description: Sign In abstraction for a typical web app user
|
50
|
+
email: sixarm@sixarm.com
|
51
|
+
executables: []
|
52
|
+
extensions: []
|
53
|
+
extra_rdoc_files: []
|
54
|
+
files:
|
55
|
+
- ".gemtest"
|
56
|
+
- CHANGES.md
|
57
|
+
- LICENSE.md
|
58
|
+
- README.md
|
59
|
+
- Rakefile
|
60
|
+
- VERSION
|
61
|
+
- lib/sixarm_ruby_sign_in.rb
|
62
|
+
- test/sixarm_ruby_sign_in_test.rb
|
63
|
+
homepage: http://sixarm.com/
|
64
|
+
licenses:
|
65
|
+
- BSD
|
66
|
+
- GPL
|
67
|
+
- MIT
|
68
|
+
- PAL
|
69
|
+
- Various
|
70
|
+
metadata: {}
|
71
|
+
post_install_message:
|
72
|
+
rdoc_options: []
|
73
|
+
require_paths:
|
74
|
+
- lib
|
75
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: '0'
|
80
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
requirements: []
|
86
|
+
rubyforge_project:
|
87
|
+
rubygems_version: 2.4.8
|
88
|
+
signing_key:
|
89
|
+
specification_version: 4
|
90
|
+
summary: SixArm.com » Ruby » Sign In
|
91
|
+
test_files:
|
92
|
+
- test/sixarm_ruby_sign_in_test.rb
|
metadata.gz.sig
ADDED
Binary file
|