username 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +37 -0
- data/app/models/concerns/username/model.rb +22 -1
- data/lib/username/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a76b0ea615f4def3a94b66ca1a024202c36bf106c9261ff20cfee0a95e051cfa
|
4
|
+
data.tar.gz: 809f5283ee7f6b15a56e99802afa6767c1513c378072afa032dc21d171706882
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8bebd2607b4a0b2bf24dfb973524799ca074bce7424113a1d98b1bb78667da6c149f440968801b7fd0fd273242b30330883f87bd483b140cc6669049df63220f
|
7
|
+
data.tar.gz: 15456eb519fbe2062ebb7cab85f063774f9f9e4e6e3535a5fd01cf45744a621aea1048e4c6fa2926e0bb49e5cbd4a0deba17ee949e6ab052c9a4e56c1e4e8348
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -11,6 +11,7 @@ Usernames for ActiveRecord model.
|
|
11
11
|
* [Installation](#installation)
|
12
12
|
* [Usage](#usage)
|
13
13
|
* [Methods](#methods)
|
14
|
+
* [Devise](#devise)
|
14
15
|
* [Configuration](#configuration)
|
15
16
|
* [To Do](#to-do)
|
16
17
|
* [Contributing](#contributing)
|
@@ -72,6 +73,42 @@ User.username_valid? 'test'
|
|
72
73
|
User.first.username_available? 'test'
|
73
74
|
```
|
74
75
|
|
76
|
+
### Devise
|
77
|
+
|
78
|
+
If you are using Devise and you want to allow your users to sign in using either their username or email address, here is how you'd do that:
|
79
|
+
|
80
|
+
1) Pass the `devise` option to the `has_username` method:
|
81
|
+
|
82
|
+
```ruby
|
83
|
+
class User < ApplicationRecord
|
84
|
+
has_username devise: true
|
85
|
+
end
|
86
|
+
```
|
87
|
+
|
88
|
+
2) Configure permitted Devise parameters in your `ApplicationController`:
|
89
|
+
|
90
|
+
```ruby
|
91
|
+
class ApplicationController < ActionController::Base
|
92
|
+
|
93
|
+
before_action :configure_permitted_parameters, if: :devise_controller?
|
94
|
+
|
95
|
+
def configure_permitted_parameters
|
96
|
+
attributes = [:username, :email, :password, :remember_me]
|
97
|
+
devise_parameter_sanitizer.permit :sign_up, keys: attributes
|
98
|
+
devise_parameter_sanitizer.permit :account_update, keys: attributes
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
```
|
103
|
+
|
104
|
+
3) Replace `:email` in your sign in form with `:login`:
|
105
|
+
|
106
|
+
```haml
|
107
|
+
= simple_form_for resource, as: resource_name, url: session_url(resource_name) do |f|
|
108
|
+
= f.input :login, required: true, autofocus: true
|
109
|
+
= f.input :password, required: true
|
110
|
+
```
|
111
|
+
|
75
112
|
---
|
76
113
|
|
77
114
|
## Configuration
|
@@ -4,9 +4,19 @@ module Username
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
module ClassMethods
|
7
|
-
def has_username
|
7
|
+
def has_username options = {}
|
8
|
+
defaults = {
|
9
|
+
devise: false
|
10
|
+
}
|
11
|
+
options = defaults.merge options
|
12
|
+
|
8
13
|
Username.configuration&.models << self.name
|
9
14
|
validate :username_validation
|
15
|
+
|
16
|
+
if options[:devise]
|
17
|
+
attr_accessor :login
|
18
|
+
extend Username::Model::DeviseMethods
|
19
|
+
end
|
10
20
|
end
|
11
21
|
|
12
22
|
def username_valid? username
|
@@ -27,6 +37,17 @@ module Username
|
|
27
37
|
end
|
28
38
|
end
|
29
39
|
|
40
|
+
module DeviseMethods
|
41
|
+
def find_for_database_authentication warden_conditions
|
42
|
+
conditions = warden_conditions.dup
|
43
|
+
if login = conditions.delete(:login)
|
44
|
+
where(conditions.to_h).where(['lower(username) = :value OR lower(email) = :value', { value: login.downcase }]).first
|
45
|
+
elsif conditions.has_key?(:username) || conditions.has_key?(:email)
|
46
|
+
where(conditions.to_h).first
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
30
51
|
def username_available? username
|
31
52
|
unless username.nil?
|
32
53
|
valid = true
|
data/lib/username/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: username
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonas Hübotter
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-01-
|
11
|
+
date: 2018-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|