https://github.com/i2bskn/passwd
Passwd is provide hashed password creation and authentication.
https://github.com/i2bskn/passwd
authentication password rails
Last synced: over 1 year ago
JSON representation
Passwd is provide hashed password creation and authentication.
- Host: GitHub
- URL: https://github.com/i2bskn/passwd
- Owner: i2bskn
- License: mit
- Created: 2013-04-21T13:30:27.000Z (about 13 years ago)
- Default Branch: master
- Last Pushed: 2021-03-19T08:31:52.000Z (over 5 years ago)
- Last Synced: 2025-03-19T16:39:01.189Z (over 1 year ago)
- Topics: authentication, password, rails
- Language: Ruby
- Homepage:
- Size: 141 KB
- Stars: 1
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Passwd
[](http://badge.fury.io/rb/passwd)
Passwd is provide hashed password creation and authentication.
## Installation
Add this line to your application's Gemfile:
```ruby
gem "passwd"
```
And then execute:
```
$ bundle install
```
Create config file(Only Rails) with:
```
$ bundle exec rails generate passwd:install
```
The following file will be created.
See [config](https://github.com/i2bskn/passwd/blob/master/lib/generators/passwd/install/templates/passwd.rb) if not Rails.
- `config/initializers/passwd.rb`
## Usage
### Ruby
```ruby
passwd = Passwd.current
passwd.random(10) # Create random password of 10 characters.
password = passwd.password_hashing("secret") # Create hashed password from plain text.
password == "secret" # => true
load_password = passwd.load_password("hashed_password") # Load hashed password.
load_password == "secret"
```
### ActiveRecord with Rails
Add authentication to your `User` model.
Model name is `User` by default, but can be changed in configuration file.
```ruby
class User < ActiveRecord::Base
with_authenticate
end
```
#### Options
User model The following column are required.
Column name can be changed with the specified options.
- `:id => :email` Unique value to be used for authentication.
- `:password => :password` Column of String to save the hashed password.
Use the `name` column as id.
```ruby
class User < ActiveRecord::Base
with_authenticate id: :name
end
```
#### Authenticate
`authenticate` method is available in both instance and class.
Returns user object if the authentication successful.
Returns nil if authentication fails or doesn't exists user.
Instance method is not required `id`.
```ruby
user = User.authenticate(params[:email], params[:password]) # Returns user object or nil.
user.authenticate(params[:password]) # Returns true if authentication succeeded.
```
`set_password` method will be set random password.
To specify password as an argument if you want to specify a password.
```ruby
current_user.set_password("secret") # Set random password if not specified a argument.
current_user.save
new_user = User.new
random_plain_password = new_user.set_password
UserMailer.register(new_user, random_plain_password).deliver!
```
### ActionController
Already several methods is available in your controller.
If you want to authenticate the application.
Unauthorized access is thrown exception.
Can be specified to redirect in configuration file.
```ruby
class ApplicationController < ActionController::Base
before_action :require_signin
end
```
If you want to implement the session management.
```ruby
class SessionsController < ApplicationController
# If you has been enabled `require_signin` in ApplicationController
skip_before_action :require_signin
# GET /signin
def new; end
# POST /signin
def create
# Returns nil or user
@user = User.authenticate(params[:email], params[:password])
if @user
# Save user_id to session
signin(@user)
redirect_to_referer_or some_path, notice: "Signin was successful. Hello #{current_user.name}"
else # Authentication fails
render action: :new
end
end
# DELETE /signout
def destroy
# Clear session (Only user_id)
signout
redirect_to some_path
end
end
```
`current_user` and `signin?` method available in controllers and views.
```ruby
def greet
name = signin? ? current_user.name : "Guest"
render text: "Hello #{name}!!"
end
```
## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/i2bskn/passwd.
## License
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).