did_token_generator 0.0.1
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.
- data/README +29 -0
- data/lib/token_generator.rb +15 -0
- metadata +68 -0
data/README
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
TokenGenerator
|
2
|
+
==============
|
3
|
+
|
4
|
+
Mix-in for classes that needs to have a token generated using MD5. You can set the length of the token
|
5
|
+
and provide it with an optional block that'll check the validity of the generated token (usually whether it's
|
6
|
+
already taken or not).
|
7
|
+
|
8
|
+
The two methods are generate_token, which will just return a new token, and set_token, which will assume
|
9
|
+
that there's a writer for the instance variable "token" and that the class has a "find_by_token" method to check
|
10
|
+
validity (if a duplicate exists, generate another token).
|
11
|
+
|
12
|
+
Examples:
|
13
|
+
|
14
|
+
class Invitation < ActiveRecord::Base
|
15
|
+
include TokenGenerator
|
16
|
+
before_create :set_token
|
17
|
+
end
|
18
|
+
|
19
|
+
class ImperialInvitation < ActiveRecord::Base
|
20
|
+
include TokenGenerator
|
21
|
+
before_create :set_token
|
22
|
+
|
23
|
+
private
|
24
|
+
def set_token
|
25
|
+
self.token = generate_token { |token| complies_to_imperial_standards?(token) }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
Copyright (c) 2005 David Heinemeier Hansson, Marcel Molina Jr. released under the MIT license
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module TokenGenerator
|
2
|
+
def generate_token(size = 12, &validity)
|
3
|
+
constant = "#{self.class.name}#{id}"
|
4
|
+
|
5
|
+
begin
|
6
|
+
token = CGI::Session.generate_unique_id(constant).first(size)
|
7
|
+
end while !validity.call(token) if block_given?
|
8
|
+
|
9
|
+
token
|
10
|
+
end
|
11
|
+
|
12
|
+
def set_token
|
13
|
+
self.token = generate_token { |token| self.class.find_by_token(token).nil? }
|
14
|
+
end
|
15
|
+
end
|
metadata
ADDED
@@ -0,0 +1,68 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: did_token_generator
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Rails
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-02-14 00:00:00 +01:00
|
19
|
+
default_executable:
|
20
|
+
dependencies: []
|
21
|
+
|
22
|
+
description: "Token generator plugin "
|
23
|
+
email: didier@nocoffee.fr
|
24
|
+
executables: []
|
25
|
+
|
26
|
+
extensions: []
|
27
|
+
|
28
|
+
extra_rdoc_files:
|
29
|
+
- README
|
30
|
+
files:
|
31
|
+
- lib/token_generator.rb
|
32
|
+
- README
|
33
|
+
has_rdoc: true
|
34
|
+
homepage: https://github.com/rails/token_generator
|
35
|
+
licenses: []
|
36
|
+
|
37
|
+
post_install_message:
|
38
|
+
rdoc_options:
|
39
|
+
- --charset=UTF-8
|
40
|
+
require_paths:
|
41
|
+
- lib
|
42
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
hash: 3
|
48
|
+
segments:
|
49
|
+
- 0
|
50
|
+
version: "0"
|
51
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
hash: 3
|
57
|
+
segments:
|
58
|
+
- 0
|
59
|
+
version: "0"
|
60
|
+
requirements: []
|
61
|
+
|
62
|
+
rubyforge_project:
|
63
|
+
rubygems_version: 1.4.2
|
64
|
+
signing_key:
|
65
|
+
specification_version: 3
|
66
|
+
summary: Token generator plugin
|
67
|
+
test_files: []
|
68
|
+
|