smartshack_simple_login 0.0.2 → 0.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 33532189d8c466fddd30da716aafdaabcbf88079
4
- data.tar.gz: 3de49bc6e9c11229bee49d15c94ec46a5531c33a
3
+ metadata.gz: 23087f208fe2c5d0c245699e792392a73f44ce49
4
+ data.tar.gz: 058bd4ba3a425f684f2d4c30ffa2bec2c3a059da
5
5
  SHA512:
6
- metadata.gz: 7aa69f11eeda2e07d6731b714730a3ad0f6e1f0ccbb7c7fd6451085527a7ef095005a83692e38b9c9d8eee6acfcfcbfa60869918565063cb1ec2ad6d53d68fe0
7
- data.tar.gz: af1529144f916a719145ded6a5275963522b1533657e83eaa54d2dcd9f0e32ae1f52a50d893ce056db786cc9cfea3f1530f6a73a519c7285154581a57599a8ac
6
+ metadata.gz: 3cdc9467697973b41c4b7c512698ab92e46e5b55bcd6120c4fc33a4a0fd097c78a2e4815c95922b998909bfa914870e1f2a58652549c41d69df132894792e0a1
7
+ data.tar.gz: bd6fb14a20f5bc0e57196d7668f4296b01d8ab44da9e18669a2d8fe157b77f7fcc19dbfd4f241e27ffba8d2451577a26db594aa175cfd1c7a844182c84815f7b
data/lib/.txt ADDED
File without changes
File without changes
@@ -0,0 +1,56 @@
1
+ module SimpleLogin
2
+ module Generators
3
+ class SimpleLoginGenerator < Rails::Generators::NamedBase
4
+ source_root File.expand_path("../../templates", __FILE__)
5
+
6
+ def controllers
7
+ template 'controllers/users_controller.rb', 'app/controllers/users_controller.rb'
8
+ template 'controllers/password_resets_controller.rb', 'app/controllers/password_resets_controller.rb'
9
+ template 'controllers/sessions_controller.rb', 'app/controllers/sessions_controller.rb'
10
+ end
11
+
12
+ def mailers
13
+ template 'mailers/user_mailer.rb', 'app/mailers/user_mailer.rb'
14
+ end
15
+ def models
16
+ template 'models/user.rb', 'app/models/user.rb'
17
+ template 'models/concerns/password_reset.rb', 'app/models/concerns/password_reset.rb'
18
+ end
19
+ def views
20
+ directory 'views' , 'app/views'
21
+ end
22
+
23
+ def migrations
24
+ template 'create_users.rb', 'db/migrations/create_users.rb'
25
+ end
26
+
27
+
28
+ def application
29
+ inject_into_file 'app/controllers/application_controller.rb', before: "end" do
30
+ "\n\nprivate\n" +
31
+ "def current_user\n" +
32
+ " @current_user ||= User.find(session[:user_id]) if session[:user_id]\n" +
33
+ "end\n" +
34
+ "helper_method :current_user\n"
35
+ end
36
+ end
37
+
38
+
39
+
40
+ def add_routes
41
+ route "get 'signup', to: 'users#new', as: 'signup'"
42
+ route "get 'login', to: 'sessions#new', as: 'login'"
43
+ route "get 'logout', to: 'sessions#destroy', as: 'logout'"
44
+
45
+ route "resources :users"
46
+ route "resources :sessions"
47
+ route "resources :password_resets"
48
+ end
49
+
50
+ def add_gem
51
+ gem 'bcrypt-ruby', '~> 3.1.2'
52
+ gem 'simple_form'
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,38 @@
1
+ class PasswordResetsController < ApplicationController
2
+ def new
3
+ end
4
+
5
+ def create
6
+ user = User.find_by_email(params[:email])
7
+ if user
8
+ if params[:type]
9
+ user.send_password_set
10
+ else
11
+ user.send_password_reset
12
+ end
13
+ redirect_to root_url, notice: "Email został wysłany"
14
+ else
15
+ redirect_to root_url, notice: "Email nie istnieje"
16
+ end
17
+ end
18
+
19
+ def edit
20
+ @user = User.find_by_password_reset_token!(params[:id])
21
+ end
22
+
23
+ def update
24
+ @user = User.find_by_password_reset_token!(params[:id])
25
+ if @user.password_reset_sent_at < 2.hours.ago and @user.password_reset_sent_at != DateTime.new(2000,1,1)
26
+ redirect_to new_password_reset_path, :notice => "Czas na reset hasła minął."
27
+ elsif @user.update(user_params)
28
+ redirect_to root_url, :notice => "Hasło zostało zmienione"
29
+ else
30
+ render :edit
31
+ end
32
+ end
33
+
34
+ private
35
+ def user_params
36
+ params.require(:user).permit(:password,:password_confirmation)
37
+ end
38
+ end
@@ -0,0 +1,25 @@
1
+ class SessionsController < ApplicationController
2
+ def new
3
+ end
4
+
5
+ def create
6
+ user = User.find_by_email(params[:email])
7
+ if user && user.authenticate(params[:password])
8
+ session[:user_id] = user.id
9
+ redirect_to root_url, notice: "Zalogowano!"
10
+ else
11
+ flash.now.alert = "Email lub hasło są nieprawidłowe"
12
+ render "new"
13
+ end
14
+ end
15
+
16
+ def destroy
17
+ session[:user_id] = nil
18
+ redirect_to root_url, notice: "Wylogowano!"
19
+ end
20
+
21
+ private
22
+ def use_https?
23
+ true
24
+ end
25
+ end
@@ -0,0 +1,59 @@
1
+ class UsersController < ApplicationController
2
+ def new
3
+ @user = User.new
4
+ end
5
+
6
+ def show
7
+ @user = User.find(params[:id])
8
+ end
9
+ def create
10
+ @user = User.new(user_params)
11
+
12
+ if @user.save
13
+ redirect_to users_url, notice: "Użytkownik został dodany"
14
+ else
15
+ render "new"
16
+ end
17
+ end
18
+
19
+
20
+ def index
21
+ @users = User.all
22
+ end
23
+
24
+ def edit
25
+ @user = User.find(params[:id])
26
+ end
27
+
28
+ def update
29
+ @user = User.find(params[:id])
30
+ respond_to do |format|
31
+ if @user.update(user_params)
32
+ #śtrack_activity @user
33
+ format.html { redirect_to users_path, notice: 'Użytkownik zaktualizowany.' }
34
+ else
35
+ format.html { render action: "edit" }
36
+ end
37
+ end
38
+
39
+ end
40
+
41
+ # DELETE /announcements/1
42
+ # DELETE /announcements/1.json
43
+ def destroy
44
+ @user = User.find(params[:id])
45
+ @user.destroy
46
+
47
+ respond_to do |format|
48
+ format.html { redirect_to users_path, notice: "Usunięto użytkownika" }
49
+ format.json { head :no_content }
50
+ end
51
+ end
52
+
53
+
54
+ private
55
+ def user_params
56
+ params.require(:user).permit(:email, :password,:password_confirmation)
57
+ end
58
+
59
+ end
@@ -0,0 +1,11 @@
1
+ class CreateUsers < ActiveRecord::Migration
2
+ def change
3
+
4
+ create_table :users do |t|
5
+ t.string :email
6
+ t.string :password_digest
7
+
8
+ t.timestamps
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,19 @@
1
+ class UserMailer < ActionMailer::Base
2
+ default from: "kontakt@jellyfish.megiteam.pl"
3
+
4
+ # Subject can be set in your I18n file at config/locales/en.yml
5
+ # with the following lookup:
6
+ #
7
+ # en.user_mailer.password_reset.subject
8
+ #
9
+ def password_reset(user)
10
+ @user = user
11
+ mail :to => user.email, :subject => "Reset hasła"
12
+ end
13
+
14
+
15
+ def password_set(user)
16
+ @user = user
17
+ mail to: user.email, subject: "Ustaweinie hasła"
18
+ end
19
+ end
@@ -0,0 +1,24 @@
1
+ module PasswordReset
2
+ extend ActiveSupport::Concern
3
+ included do
4
+ def send_password_reset
5
+ generate_token(:password_reset_token)
6
+ self.password_reset_sent_at = Time.zone.now
7
+ save!
8
+ UserMailer.password_reset(self).deliver
9
+ end
10
+
11
+ def send_password_set
12
+ generate_token(:password_reset_token)
13
+ self.password_reset_sent_at = DateTime.new(2000,1,1)
14
+ save!
15
+ UserMailer.password_set(self).deliver
16
+ end
17
+
18
+ def generate_token(column)
19
+ begin
20
+ self[column] = SecureRandom.urlsafe_base64
21
+ end while User.exists?(column => self[column])
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,5 @@
1
+ class User < ActiveRecord::Base
2
+ has_secure_password
3
+ validates_uniqueness_of :email
4
+ include PasswordReset
5
+ end
@@ -0,0 +1,6 @@
1
+ <%= form_tag password_resets_path, :method => :post do %>
2
+ <%= hidden_field_tag :type, "set" %>
3
+ <%= hidden_field_tag :email, email %>
4
+
5
+ <div class="actions"><%= submit_tag "Reset hasła", class: "button" %></div>
6
+ <% end %>
@@ -0,0 +1,23 @@
1
+ <h1>Ustawianie nowego hasła</h1>
2
+
3
+ <%= form_for @user, :url => password_reset_path(params[:id]) do |f| %>
4
+ <% if @user.errors.any? %>
5
+ <div class="error_messages">
6
+ <h2>Usuń błędy</h2>
7
+ <ul>
8
+ <% for message in @user.errors.full_messages %>
9
+ <li><%= message %></li>
10
+ <% end %>
11
+ </ul>
12
+ </div>
13
+ <% end %>
14
+ <div class="field">
15
+ <%= f.label :password %>
16
+ <%= f.password_field :password %>
17
+ </div>
18
+ <div class="field">
19
+ <%= f.label :password_confirmation %>
20
+ <%= f.password_field :password_confirmation %>
21
+ </div>
22
+ <div class="actions"><%= f.submit "Ustaw hasło" %></div>
23
+ <% end %>
@@ -0,0 +1,8 @@
1
+ <h1>Reset hasła</h1>
2
+ <%= form_tag password_resets_path, :method => :post do %>
3
+ <div class="field">
4
+ <%= label_tag :email %>
5
+ <%= text_field_tag :email, params[:email] %>
6
+ </div>
7
+ <div class="actions"><%= submit_tag "Reset hasła" %></div>
8
+ <% end %>
@@ -0,0 +1,17 @@
1
+
2
+ <%= form_tag sessions_path do %>
3
+ <div class="field">
4
+ <%= label_tag :email %><br />
5
+ <%= text_field_tag :email, params[:email] %>
6
+ </div>
7
+ <div class="field">
8
+ <%= label_tag :password %><br />
9
+ <%= password_field_tag :password %>
10
+ </div>
11
+
12
+ <div class="actions"><%= submit_tag "Zaloguj"%></div>
13
+
14
+ <div class="reset">
15
+ <%= link_to "Zapomniałem hasła", new_password_reset_path %>
16
+ </div>
17
+ <% end %>
@@ -0,0 +1,5 @@
1
+ Aby zresetować hasło kliknij poniższy link
2
+
3
+ <%= edit_password_reset_url(@user.password_reset_token) %>
4
+
5
+ Jeśli otrzymałeś ten email przez pomyłkę po prostu go zignoruj!
@@ -0,0 +1,5 @@
1
+ Aby wejść na stronę i ustawić sobie hasło kliknij poniższy link
2
+
3
+ <%= edit_password_reset_url(@user.password_reset_token,first: true) %>
4
+
5
+ Jeśli otrzymałeś ten email przez pomyłkę po prostu go zignoruj!
@@ -0,0 +1,6 @@
1
+ <%= simple_form_for @user do |f| %>
2
+ <%= f.input :email %>
3
+ <%= f.input :password,label: "Hasło" %>
4
+ <%= f.input :password_confirmation, label: "Powtórz hasło" %>
5
+ <%= f.button :submit, "Zapisz" %>
6
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <h1>Edycja użytkownika</h1>
2
+
3
+ <%= render 'form' %>
4
+
5
+ <%= link_to 'Pokaż', @user %> |
6
+ <%= link_to 'Powrót', users_path %>
@@ -0,0 +1,13 @@
1
+ <h1>Użytkownicy</h1>
2
+ <table>
3
+ <tr>
4
+ <th>email</th>
5
+ </tr>
6
+ <%@users.each do |u|%>
7
+ <tr>
8
+ <td><%= link_to u.email, u %></td>
9
+ </tr>
10
+ <% end%>
11
+ </table>
12
+ <br />
13
+ <%= link_to "Dodaj użytkownika", signup_path %>
@@ -0,0 +1,2 @@
1
+ <h1>Sign Up</h1>
2
+ <%= render "form"%>
@@ -0,0 +1,2 @@
1
+ <%= @user.name%>
2
+ <%= @user.email%>
@@ -1,3 +1,3 @@
1
1
  module SimpleLogin
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smartshack_simple_login
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - jerzy czepiel
@@ -50,6 +50,27 @@ files:
50
50
  - LICENSE.txt
51
51
  - README.md
52
52
  - Rakefile
53
+ - lib/.txt
54
+ - lib/generators/.txt
55
+ - lib/generators/simple_login/simple_login_generator.rb
56
+ - lib/generators/templates/controllers/password_resets_controller.rb
57
+ - lib/generators/templates/controllers/sessions_controller.rb
58
+ - lib/generators/templates/controllers/users_controller.rb
59
+ - lib/generators/templates/create_users.rb
60
+ - lib/generators/templates/mailers/user_mailer.rb
61
+ - lib/generators/templates/models/concerns/password_reset.rb
62
+ - lib/generators/templates/models/user.rb
63
+ - lib/generators/templates/views/password_resets/_form.html.erb
64
+ - lib/generators/templates/views/password_resets/edit.html.erb
65
+ - lib/generators/templates/views/password_resets/new.html.erb
66
+ - lib/generators/templates/views/sessions/new.html.erb
67
+ - lib/generators/templates/views/user_mailer/password_reset.text.erb
68
+ - lib/generators/templates/views/user_mailer/password_set.text.erb
69
+ - lib/generators/templates/views/users/_form.html.erb
70
+ - lib/generators/templates/views/users/edit.html.erb
71
+ - lib/generators/templates/views/users/index.html.erb
72
+ - lib/generators/templates/views/users/new.html.erb
73
+ - lib/generators/templates/views/users/show.html.erb
53
74
  - lib/simple_login.rb
54
75
  - lib/simple_login/version.rb
55
76
  - simple_login.gemspec