signup 1.0.0
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
 - data/MIT-LICENSE +20 -0
 - data/README.md +69 -0
 - data/Rakefile +37 -0
 - data/app/assets/config/signup_manifest.js +2 -0
 - data/app/assets/javascripts/application.js +13 -0
 - data/app/assets/stylesheets/application.css +16 -0
 - data/app/controllers/signup/application_controller.rb +6 -0
 - data/app/controllers/signup/sessions_controller.rb +33 -0
 - data/app/controllers/signup/users_controller.rb +96 -0
 - data/app/helpers/signup/application_helper.rb +12 -0
 - data/app/helpers/signup/sessions_helper.rb +4 -0
 - data/app/helpers/signup/users_helper.rb +67 -0
 - data/app/jobs/signup/application_job.rb +4 -0
 - data/app/mailers/signup/application_mailer.rb +6 -0
 - data/app/models/signup/application_record.rb +5 -0
 - data/app/models/signup/user.rb +43 -0
 - data/app/views/layouts/signup/_header.html.erb +10 -0
 - data/app/views/layouts/signup/_inline_css.html.erb +232 -0
 - data/app/views/layouts/signup/_shim.html.erb +4 -0
 - data/app/views/layouts/signup/application.html.erb +18 -0
 - data/app/views/signup/sessions/new.html.erb +31 -0
 - data/app/views/signup/shared/_flash_notice.html.erb +3 -0
 - data/app/views/signup/users/_form.html.erb +62 -0
 - data/app/views/signup/users/edit.html.erb +20 -0
 - data/app/views/signup/users/index.html.erb +35 -0
 - data/app/views/signup/users/new.html.erb +18 -0
 - data/app/views/signup/users/show.html.erb +38 -0
 - data/app/views/signup/users/signup.html.erb +59 -0
 - data/config/routes.rb +9 -0
 - data/db/migrate/20160930163056_create_signup_users.rb +15 -0
 - data/db/seeds.rb +9 -0
 - data/lib/signup.rb +3 -0
 - data/lib/signup/engine.rb +18 -0
 - data/lib/signup/version.rb +3 -0
 - data/lib/tasks/signup_tasks.rake +12 -0
 - metadata +147 -0
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: d1fd94565cf0b3f2386304e69d517afafd44b616
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 2e4bc7ec5f00e092e33450524605a79bc9b3d23e
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: bf0f70fe94abb83c6989430eebb63b6b1f204320a78af807980870642313990e1683d3c9f737797dbf76a944cdbf5849acd15bbd495784e22dbac44f55dcd053
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 0ee6c8e25828a802d5d1328b0a5641a0bfd34e818e6e278def7cecb9749a7c62b9fcc1f3ce52968f10c021ea11d94ac3d2f53bb8ecc271e20a42436cbab2275f
         
     | 
    
        data/MIT-LICENSE
    ADDED
    
    | 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Copyright 2016 hmtanbir
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
      
 4 
     | 
    
         
            +
            a copy of this software and associated documentation files (the
         
     | 
| 
      
 5 
     | 
    
         
            +
            "Software"), to deal in the Software without restriction, including
         
     | 
| 
      
 6 
     | 
    
         
            +
            without limitation the rights to use, copy, modify, merge, publish,
         
     | 
| 
      
 7 
     | 
    
         
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         
     | 
| 
      
 8 
     | 
    
         
            +
            permit persons to whom the Software is furnished to do so, subject to
         
     | 
| 
      
 9 
     | 
    
         
            +
            the following conditions:
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be
         
     | 
| 
      
 12 
     | 
    
         
            +
            included in all copies or substantial portions of the Software.
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         
     | 
| 
      
 15 
     | 
    
         
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         
     | 
| 
      
 16 
     | 
    
         
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         
     | 
| 
      
 17 
     | 
    
         
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         
     | 
| 
      
 18 
     | 
    
         
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         
     | 
| 
      
 19 
     | 
    
         
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         
     | 
| 
      
 20 
     | 
    
         
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
    
        data/README.md
    ADDED
    
    | 
         @@ -0,0 +1,69 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Signup
         
     | 
| 
      
 2 
     | 
    
         
            +
            It is a simple but very powerful authentication and authorization plug-ins for rails.
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            ## Installation
         
     | 
| 
      
 5 
     | 
    
         
            +
            **Step 1:** Add this line to your application's Gemfile:
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 8 
     | 
    
         
            +
            gem 'signup'
         
     | 
| 
      
 9 
     | 
    
         
            +
            ```
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            And then execute:
         
     | 
| 
      
 12 
     | 
    
         
            +
            ```bash
         
     | 
| 
      
 13 
     | 
    
         
            +
            $ bundle
         
     | 
| 
      
 14 
     | 
    
         
            +
            ```
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            Or install it yourself as:
         
     | 
| 
      
 17 
     | 
    
         
            +
            ```bash
         
     | 
| 
      
 18 
     | 
    
         
            +
            $ gem install signup
         
     | 
| 
      
 19 
     | 
    
         
            +
            ```
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            Follow the step to install this plugins:
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            **Step 2:**
         
     | 
| 
      
 24 
     | 
    
         
            +
            For installing signup migration:
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            ```
         
     | 
| 
      
 27 
     | 
    
         
            +
            $ bundle exec rake signup:install
         
     | 
| 
      
 28 
     | 
    
         
            +
            ```
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            **Step 3:**
         
     | 
| 
      
 31 
     | 
    
         
            +
            Mount route, open config-> routes.rb and write below code:
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            ```
         
     | 
| 
      
 34 
     | 
    
         
            +
            mount Signup::Engine, at: '/'
         
     | 
| 
      
 35 
     | 
    
         
            +
            ```
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            ## Usage
         
     | 
| 
      
 38 
     | 
    
         
            +
            From your controller, just use:
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            ```
         
     | 
| 
      
 41 
     | 
    
         
            +
            before_action :authorized?
         
     | 
| 
      
 42 
     | 
    
         
            +
            ```
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
            This will prevent guest user to enter in your view.
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            ## Administrator
         
     | 
| 
      
 47 
     | 
    
         
            +
            Username: admin@signup.com
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
            Password: secret
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            ## Advanced 
         
     | 
| 
      
 52 
     | 
    
         
            +
             Make a dashboard under admin namespace in your project folder as like this code:
         
     | 
| 
      
 53 
     | 
    
         
            +
             
         
     | 
| 
      
 54 
     | 
    
         
            +
             ```
         
     | 
| 
      
 55 
     | 
    
         
            +
             $ rails g contoller admin/dashboard index
         
     | 
| 
      
 56 
     | 
    
         
            +
             ```
         
     | 
| 
      
 57 
     | 
    
         
            +
             And configure in your project routes as like:
         
     | 
| 
      
 58 
     | 
    
         
            +
             ```
         
     | 
| 
      
 59 
     | 
    
         
            +
             namespace :admin do
         
     | 
| 
      
 60 
     | 
    
         
            +
                 get 'dashboard', to:'dashboard#index'
         
     | 
| 
      
 61 
     | 
    
         
            +
             end
         
     | 
| 
      
 62 
     | 
    
         
            +
             ```
         
     | 
| 
      
 63 
     | 
    
         
            +
            For this, it will redirect dashboard after sign in.
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
            ## Contributing
         
     | 
| 
      
 66 
     | 
    
         
            +
            If you find any issue, please inform us in our [github project repo](https://github.com/bdmade/signup)
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
            ## License
         
     | 
| 
      
 69 
     | 
    
         
            +
            The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
         
     | 
    
        data/Rakefile
    ADDED
    
    | 
         @@ -0,0 +1,37 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            begin
         
     | 
| 
      
 2 
     | 
    
         
            +
              require 'bundler/setup'
         
     | 
| 
      
 3 
     | 
    
         
            +
            rescue LoadError
         
     | 
| 
      
 4 
     | 
    
         
            +
              puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
         
     | 
| 
      
 5 
     | 
    
         
            +
            end
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            require 'rdoc/task'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            RDoc::Task.new(:rdoc) do |rdoc|
         
     | 
| 
      
 10 
     | 
    
         
            +
              rdoc.rdoc_dir = 'rdoc'
         
     | 
| 
      
 11 
     | 
    
         
            +
              rdoc.title    = 'Signup'
         
     | 
| 
      
 12 
     | 
    
         
            +
              rdoc.options << '--line-numbers'
         
     | 
| 
      
 13 
     | 
    
         
            +
              rdoc.rdoc_files.include('README.md')
         
     | 
| 
      
 14 
     | 
    
         
            +
              rdoc.rdoc_files.include('lib/**/*.rb')
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            APP_RAKEFILE = File.expand_path("../spec/signup_app/Rakefile", __FILE__)
         
     | 
| 
      
 18 
     | 
    
         
            +
            load 'rails/tasks/engine.rake'
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            load 'rails/tasks/statistics.rake'
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            require 'bundler/gem_tasks'
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            require 'rake/testtask'
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            Rake::TestTask.new(:test) do |t|
         
     | 
| 
      
 30 
     | 
    
         
            +
              t.libs << 'lib'
         
     | 
| 
      
 31 
     | 
    
         
            +
              t.libs << 'test'
         
     | 
| 
      
 32 
     | 
    
         
            +
              t.pattern = 'test/**/*_test.rb'
         
     | 
| 
      
 33 
     | 
    
         
            +
              t.verbose = false
         
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            task default: :test
         
     | 
| 
         @@ -0,0 +1,13 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            // This is a manifest file that'll be compiled into application.js, which will include all the files
         
     | 
| 
      
 2 
     | 
    
         
            +
            // listed below.
         
     | 
| 
      
 3 
     | 
    
         
            +
            //
         
     | 
| 
      
 4 
     | 
    
         
            +
            // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
         
     | 
| 
      
 5 
     | 
    
         
            +
            // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
         
     | 
| 
      
 6 
     | 
    
         
            +
            //
         
     | 
| 
      
 7 
     | 
    
         
            +
            // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
         
     | 
| 
      
 8 
     | 
    
         
            +
            // compiled file. JavaScript code in this file should be added after the last require_* statement.
         
     | 
| 
      
 9 
     | 
    
         
            +
            //
         
     | 
| 
      
 10 
     | 
    
         
            +
            // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
         
     | 
| 
      
 11 
     | 
    
         
            +
            // about supported directives.
         
     | 
| 
      
 12 
     | 
    
         
            +
            //
         
     | 
| 
      
 13 
     | 
    
         
            +
            //= require_tree signup
         
     | 
| 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            /*
         
     | 
| 
      
 2 
     | 
    
         
            +
             * This is a manifest file that'll be compiled into application.css, which will include all the files
         
     | 
| 
      
 3 
     | 
    
         
            +
             * listed below.
         
     | 
| 
      
 4 
     | 
    
         
            +
             *
         
     | 
| 
      
 5 
     | 
    
         
            +
             * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
         
     | 
| 
      
 6 
     | 
    
         
            +
             * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
         
     | 
| 
      
 7 
     | 
    
         
            +
             *
         
     | 
| 
      
 8 
     | 
    
         
            +
             * You're free to add application-wide styles to this file and they'll appear at the bottom of the
         
     | 
| 
      
 9 
     | 
    
         
            +
             * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
         
     | 
| 
      
 10 
     | 
    
         
            +
             * files in this directory. Styles in this file should be added after the last require_* statement.
         
     | 
| 
      
 11 
     | 
    
         
            +
             * It is generally better to create a new file per style scope.
         
     | 
| 
      
 12 
     | 
    
         
            +
             *
         
     | 
| 
      
 13 
     | 
    
         
            +
             *
         
     | 
| 
      
 14 
     | 
    
         
            +
             *= require_tree
         
     | 
| 
      
 15 
     | 
    
         
            +
             *= require_self
         
     | 
| 
      
 16 
     | 
    
         
            +
             */
         
     | 
| 
         @@ -0,0 +1,33 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require_dependency 'signup/application_controller'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Signup
         
     | 
| 
      
 4 
     | 
    
         
            +
              class SessionsController < ApplicationController
         
     | 
| 
      
 5 
     | 
    
         
            +
                def new
         
     | 
| 
      
 6 
     | 
    
         
            +
                  if logged_in?
         
     | 
| 
      
 7 
     | 
    
         
            +
                    redirect_to main_app.root_path
         
     | 
| 
      
 8 
     | 
    
         
            +
                  end
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                def create
         
     | 
| 
      
 12 
     | 
    
         
            +
                  user = User.find_by(email: params[:session][:email].downcase)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  if user && user.authenticate(params[:session][:password])
         
     | 
| 
      
 14 
     | 
    
         
            +
                    log_in user
         
     | 
| 
      
 15 
     | 
    
         
            +
                    params[:session][:remember_me] == '1' ? remember(user) : forget(user)
         
     | 
| 
      
 16 
     | 
    
         
            +
                    if (main_app.admin_dashboard_path)
         
     | 
| 
      
 17 
     | 
    
         
            +
                      redirect_to main_app.admin_dashboard_path, notice: 'logged in !'
         
     | 
| 
      
 18 
     | 
    
         
            +
                    else
         
     | 
| 
      
 19 
     | 
    
         
            +
                      redirect_to user, notice: 'logged in !'
         
     | 
| 
      
 20 
     | 
    
         
            +
                    end
         
     | 
| 
      
 21 
     | 
    
         
            +
                  else
         
     | 
| 
      
 22 
     | 
    
         
            +
                    flash.now[:danger] = 'Invalid email/password combination' # Not quite right!
         
     | 
| 
      
 23 
     | 
    
         
            +
                    render 'new'
         
     | 
| 
      
 24 
     | 
    
         
            +
                  end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                def destroy
         
     | 
| 
      
 29 
     | 
    
         
            +
                  log_out if logged_in?
         
     | 
| 
      
 30 
     | 
    
         
            +
                  redirect_to signup.login_path
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,96 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require_dependency "signup/application_controller"
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Signup
         
     | 
| 
      
 4 
     | 
    
         
            +
              class UsersController < ApplicationController
         
     | 
| 
      
 5 
     | 
    
         
            +
                before_action :set_user, :match_user, only: [:show, :edit, :update, :destroy]
         
     | 
| 
      
 6 
     | 
    
         
            +
                before_action :authorized?, :admin?, except: [:signup, :create]
         
     | 
| 
      
 7 
     | 
    
         
            +
                before_action :go_back_if_not_admin, except: [:signup, :create, :edit, :show, :update]
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                # GET /users
         
     | 
| 
      
 10 
     | 
    
         
            +
                def index
         
     | 
| 
      
 11 
     | 
    
         
            +
                  @users = User.all
         
     | 
| 
      
 12 
     | 
    
         
            +
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                # GET /users/1
         
     | 
| 
      
 15 
     | 
    
         
            +
                def show
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                # GET /users/new
         
     | 
| 
      
 19 
     | 
    
         
            +
                def new
         
     | 
| 
      
 20 
     | 
    
         
            +
                  @user = User.new
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                # GET /users/1/edit
         
     | 
| 
      
 24 
     | 
    
         
            +
                def edit
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                # POST /users
         
     | 
| 
      
 28 
     | 
    
         
            +
                def create
         
     | 
| 
      
 29 
     | 
    
         
            +
                  @user = User.new(user_params)
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                  if @user.save
         
     | 
| 
      
 32 
     | 
    
         
            +
                    log_in @user
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                    if (main_app.admin_dashboard_path)
         
     | 
| 
      
 35 
     | 
    
         
            +
                      redirect_to main_app.admin_dashboard_path, notice: 'User was successfully created.'
         
     | 
| 
      
 36 
     | 
    
         
            +
                    else
         
     | 
| 
      
 37 
     | 
    
         
            +
                      redirect_to @user, notice: 'User was successfully created.'
         
     | 
| 
      
 38 
     | 
    
         
            +
                    end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                  else
         
     | 
| 
      
 41 
     | 
    
         
            +
                    if current_user.nil?
         
     | 
| 
      
 42 
     | 
    
         
            +
                      render :signup
         
     | 
| 
      
 43 
     | 
    
         
            +
                    else
         
     | 
| 
      
 44 
     | 
    
         
            +
                      render :new
         
     | 
| 
      
 45 
     | 
    
         
            +
                    end
         
     | 
| 
      
 46 
     | 
    
         
            +
                  end
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                # PATCH/PUT /users/1
         
     | 
| 
      
 50 
     | 
    
         
            +
                def update
         
     | 
| 
      
 51 
     | 
    
         
            +
                  if @user.update(user_params)
         
     | 
| 
      
 52 
     | 
    
         
            +
                    redirect_to @user, notice: 'User was successfully updated.'
         
     | 
| 
      
 53 
     | 
    
         
            +
                  else
         
     | 
| 
      
 54 
     | 
    
         
            +
                    render :edit
         
     | 
| 
      
 55 
     | 
    
         
            +
                  end
         
     | 
| 
      
 56 
     | 
    
         
            +
                end
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                # DELETE /users/1
         
     | 
| 
      
 59 
     | 
    
         
            +
                def destroy
         
     | 
| 
      
 60 
     | 
    
         
            +
                  @user.destroy
         
     | 
| 
      
 61 
     | 
    
         
            +
                  redirect_to users_url, notice: 'User was successfully destroyed.'
         
     | 
| 
      
 62 
     | 
    
         
            +
                end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                # sign up page
         
     | 
| 
      
 65 
     | 
    
         
            +
                def signup
         
     | 
| 
      
 66 
     | 
    
         
            +
                  if current_user.nil?
         
     | 
| 
      
 67 
     | 
    
         
            +
                    @user = User.new
         
     | 
| 
      
 68 
     | 
    
         
            +
                  else
         
     | 
| 
      
 69 
     | 
    
         
            +
                    redirect_to user_path(current_user), alert: 'Already signed up !'
         
     | 
| 
      
 70 
     | 
    
         
            +
                  end
         
     | 
| 
      
 71 
     | 
    
         
            +
                end
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                private
         
     | 
| 
      
 74 
     | 
    
         
            +
                # Use callbacks to share common setup or constraints between actions.
         
     | 
| 
      
 75 
     | 
    
         
            +
                def set_user
         
     | 
| 
      
 76 
     | 
    
         
            +
                  @user = User.find(params[:id])
         
     | 
| 
      
 77 
     | 
    
         
            +
                end
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
                # Only allow a trusted parameter "white list" through.
         
     | 
| 
      
 80 
     | 
    
         
            +
                def user_params
         
     | 
| 
      
 81 
     | 
    
         
            +
                  params.require(:user).permit(:firstname, :lastname, :email, :password, :password_confirmation, :admin)
         
     | 
| 
      
 82 
     | 
    
         
            +
                end
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
                # it matches current user with database and prevents to edit/update other user profile
         
     | 
| 
      
 85 
     | 
    
         
            +
                def match_user
         
     | 
| 
      
 86 
     | 
    
         
            +
                  unless admin?
         
     | 
| 
      
 87 
     | 
    
         
            +
                    user = User.find(current_user)
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
                    unless user.id == set_user.id
         
     | 
| 
      
 90 
     | 
    
         
            +
                      redirect_to user_path(current_user), notice: 'You do not have any permission to grant this page !'
         
     | 
| 
      
 91 
     | 
    
         
            +
                    end
         
     | 
| 
      
 92 
     | 
    
         
            +
                  end
         
     | 
| 
      
 93 
     | 
    
         
            +
                end
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
              end
         
     | 
| 
      
 96 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,67 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Signup
         
     | 
| 
      
 2 
     | 
    
         
            +
              module UsersHelper
         
     | 
| 
      
 3 
     | 
    
         
            +
                # Logs in the given user.
         
     | 
| 
      
 4 
     | 
    
         
            +
                def log_in(user)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  session[:user_id] = user.id
         
     | 
| 
      
 6 
     | 
    
         
            +
                end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                # Remembers a user in a persistent session.
         
     | 
| 
      
 9 
     | 
    
         
            +
                def remember(user)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  user.remember
         
     | 
| 
      
 11 
     | 
    
         
            +
                  cookies.permanent.signed[:user_id] = user.id
         
     | 
| 
      
 12 
     | 
    
         
            +
                  cookies.permanent[:remember_token] = user.remember_token
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                # Returns the user corresponding to the remember token cookie.
         
     | 
| 
      
 16 
     | 
    
         
            +
                def current_user
         
     | 
| 
      
 17 
     | 
    
         
            +
                  if (user_id = session[:user_id])
         
     | 
| 
      
 18 
     | 
    
         
            +
                    @current_user ||= User.find_by(id: user_id)
         
     | 
| 
      
 19 
     | 
    
         
            +
                  elsif (user_id = cookies.signed[:user_id])
         
     | 
| 
      
 20 
     | 
    
         
            +
                    user = User.find_by(id: user_id)
         
     | 
| 
      
 21 
     | 
    
         
            +
                    if user && user.authenticated?(cookies[:remember_token])
         
     | 
| 
      
 22 
     | 
    
         
            +
                      log_in user
         
     | 
| 
      
 23 
     | 
    
         
            +
                      @current_user = user
         
     | 
| 
      
 24 
     | 
    
         
            +
                    end
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
                end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                # Returns true if the user is logged in, false otherwise.
         
     | 
| 
      
 29 
     | 
    
         
            +
                def logged_in?
         
     | 
| 
      
 30 
     | 
    
         
            +
                  !current_user.nil?
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                # Forgets a persistent session.
         
     | 
| 
      
 34 
     | 
    
         
            +
                def forget(user)
         
     | 
| 
      
 35 
     | 
    
         
            +
                  user.forget
         
     | 
| 
      
 36 
     | 
    
         
            +
                  cookies.delete(:user_id)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  cookies.delete(:remember_token)
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                # Logs out the current user.
         
     | 
| 
      
 41 
     | 
    
         
            +
                def log_out
         
     | 
| 
      
 42 
     | 
    
         
            +
                  forget(current_user)
         
     | 
| 
      
 43 
     | 
    
         
            +
                  session.delete(:user_id)
         
     | 
| 
      
 44 
     | 
    
         
            +
                  @current_user = nil
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                # check the current user- is it admin ?
         
     | 
| 
      
 48 
     | 
    
         
            +
                 def admin?
         
     | 
| 
      
 49 
     | 
    
         
            +
                   current_user.admin?
         
     | 
| 
      
 50 
     | 
    
         
            +
                 end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                # if current user is not admin, it redirect to root path
         
     | 
| 
      
 53 
     | 
    
         
            +
                def go_back_if_not_admin
         
     | 
| 
      
 54 
     | 
    
         
            +
                  unless admin?
         
     | 
| 
      
 55 
     | 
    
         
            +
                    # redirect_to user_path(current_user), notice: "You do not have any permission to grant this page !"
         
     | 
| 
      
 56 
     | 
    
         
            +
                    redirect_to main_app.root_path, notice: 'You do not have any permission to grant this page !'
         
     | 
| 
      
 57 
     | 
    
         
            +
                  end
         
     | 
| 
      
 58 
     | 
    
         
            +
                end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
                ## before_action :authorized?, except: :index
         
     | 
| 
      
 61 
     | 
    
         
            +
                def authorized?
         
     | 
| 
      
 62 
     | 
    
         
            +
                  if current_user.nil?
         
     | 
| 
      
 63 
     | 
    
         
            +
                    redirect_to signup.login_path, notice: 'You have to login at first'
         
     | 
| 
      
 64 
     | 
    
         
            +
                  end
         
     | 
| 
      
 65 
     | 
    
         
            +
                end
         
     | 
| 
      
 66 
     | 
    
         
            +
              end
         
     | 
| 
      
 67 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,43 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Signup
         
     | 
| 
      
 2 
     | 
    
         
            +
              class User < ApplicationRecord
         
     | 
| 
      
 3 
     | 
    
         
            +
                attr_accessor :remember_token
         
     | 
| 
      
 4 
     | 
    
         
            +
                before_save { self.email = email.downcase }
         
     | 
| 
      
 5 
     | 
    
         
            +
                validates :firstname, presence: true, length: { maximum: 50 }
         
     | 
| 
      
 6 
     | 
    
         
            +
                validates :lastname, presence: true, length: { maximum: 50 }
         
     | 
| 
      
 7 
     | 
    
         
            +
                VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
         
     | 
| 
      
 8 
     | 
    
         
            +
                validates :email, presence: true, length: { maximum: 255 },
         
     | 
| 
      
 9 
     | 
    
         
            +
                          format: { with: VALID_EMAIL_REGEX },
         
     | 
| 
      
 10 
     | 
    
         
            +
                          uniqueness: { case_sensitive: false }
         
     | 
| 
      
 11 
     | 
    
         
            +
                has_secure_password
         
     | 
| 
      
 12 
     | 
    
         
            +
                validates :password, presence: true, length: { minimum: 6 }
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                # Returns the hash digest of the given string.
         
     | 
| 
      
 15 
     | 
    
         
            +
                def User.digest(string)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :
         
     | 
| 
      
 17 
     | 
    
         
            +
                      BCrypt::Engine.cost
         
     | 
| 
      
 18 
     | 
    
         
            +
                  BCrypt::Password.create(string, cost: cost)
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                # Returns a random token.
         
     | 
| 
      
 22 
     | 
    
         
            +
                def self.new_token
         
     | 
| 
      
 23 
     | 
    
         
            +
                  SecureRandom.urlsafe_base64
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                # Remembers a user in the database for use in persistent sessions.
         
     | 
| 
      
 27 
     | 
    
         
            +
                def remember
         
     | 
| 
      
 28 
     | 
    
         
            +
                  self.remember_token = User.new_token
         
     | 
| 
      
 29 
     | 
    
         
            +
                  update_attribute(:remember_digest, User.digest(remember_token))
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                # Returns true if the given token matches the digest.
         
     | 
| 
      
 33 
     | 
    
         
            +
                def authenticated?(remember_token)
         
     | 
| 
      
 34 
     | 
    
         
            +
                  return false if remember_digest.nil?
         
     | 
| 
      
 35 
     | 
    
         
            +
                  BCrypt::Password.new(remember_digest).is_password?(remember_token)
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                # Forgets a user.
         
     | 
| 
      
 39 
     | 
    
         
            +
                def forget
         
     | 
| 
      
 40 
     | 
    
         
            +
                  update_attribute(:remember_digest, nil)
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
              end
         
     | 
| 
      
 43 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,10 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <header class="navbar navbar-fixed-top navbar-inverse">
         
     | 
| 
      
 2 
     | 
    
         
            +
              <div class="container">
         
     | 
| 
      
 3 
     | 
    
         
            +
                <%= link_to 'Authentication', signup.login_path, id: 'logo' %>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <nav>
         
     | 
| 
      
 5 
     | 
    
         
            +
                  <ul class="nav navbar-nav navbar-right">
         
     | 
| 
      
 6 
     | 
    
         
            +
                    <li><%= link_to 'Home', main_app.root_path %></li>
         
     | 
| 
      
 7 
     | 
    
         
            +
                  </ul>
         
     | 
| 
      
 8 
     | 
    
         
            +
                </nav>
         
     | 
| 
      
 9 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 10 
     | 
    
         
            +
            </header>
         
     | 
| 
         @@ -0,0 +1,232 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <style type="text/css">
         
     | 
| 
      
 2 
     | 
    
         
            +
              @import url('https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css');
         
     | 
| 
      
 3 
     | 
    
         
            +
              /* universal */
         
     | 
| 
      
 4 
     | 
    
         
            +
              body {
         
     | 
| 
      
 5 
     | 
    
         
            +
                padding-top: 60px;
         
     | 
| 
      
 6 
     | 
    
         
            +
              }
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              section {
         
     | 
| 
      
 9 
     | 
    
         
            +
                overflow: auto;
         
     | 
| 
      
 10 
     | 
    
         
            +
              }
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              textarea {
         
     | 
| 
      
 13 
     | 
    
         
            +
                resize: vertical;
         
     | 
| 
      
 14 
     | 
    
         
            +
              }
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              .center {
         
     | 
| 
      
 17 
     | 
    
         
            +
                text-align: center;
         
     | 
| 
      
 18 
     | 
    
         
            +
              }
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              .center h1 {
         
     | 
| 
      
 21 
     | 
    
         
            +
                margin-bottom: 10px;
         
     | 
| 
      
 22 
     | 
    
         
            +
              }
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              /* typography */
         
     | 
| 
      
 25 
     | 
    
         
            +
              h1, h2, h3, h4, h5, h6 {
         
     | 
| 
      
 26 
     | 
    
         
            +
                line-height: 1;
         
     | 
| 
      
 27 
     | 
    
         
            +
              }
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              h1 {
         
     | 
| 
      
 30 
     | 
    
         
            +
                font-size: 3em;
         
     | 
| 
      
 31 
     | 
    
         
            +
                letter-spacing: -2px;
         
     | 
| 
      
 32 
     | 
    
         
            +
                margin-bottom: 30px;
         
     | 
| 
      
 33 
     | 
    
         
            +
                text-align: center;
         
     | 
| 
      
 34 
     | 
    
         
            +
              }
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              h2 {
         
     | 
| 
      
 37 
     | 
    
         
            +
                font-size: 1.2em;
         
     | 
| 
      
 38 
     | 
    
         
            +
                letter-spacing: -1px;
         
     | 
| 
      
 39 
     | 
    
         
            +
                margin-bottom: 30px;
         
     | 
| 
      
 40 
     | 
    
         
            +
                text-align: center;
         
     | 
| 
      
 41 
     | 
    
         
            +
                font-weight: normal;
         
     | 
| 
      
 42 
     | 
    
         
            +
                color: #777;
         
     | 
| 
      
 43 
     | 
    
         
            +
              }
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
              p {
         
     | 
| 
      
 46 
     | 
    
         
            +
                font-size: 1.1em;
         
     | 
| 
      
 47 
     | 
    
         
            +
                line-height: 1.7em;
         
     | 
| 
      
 48 
     | 
    
         
            +
              }
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
              /* header */
         
     | 
| 
      
 51 
     | 
    
         
            +
              #logo {
         
     | 
| 
      
 52 
     | 
    
         
            +
                float: left;
         
     | 
| 
      
 53 
     | 
    
         
            +
                margin-right: 10px;
         
     | 
| 
      
 54 
     | 
    
         
            +
                font-size: 1.7em;
         
     | 
| 
      
 55 
     | 
    
         
            +
                color: #fff;
         
     | 
| 
      
 56 
     | 
    
         
            +
                text-transform: uppercase;
         
     | 
| 
      
 57 
     | 
    
         
            +
                letter-spacing: -1px;
         
     | 
| 
      
 58 
     | 
    
         
            +
                padding-top: 9px;
         
     | 
| 
      
 59 
     | 
    
         
            +
                font-weight: bold;
         
     | 
| 
      
 60 
     | 
    
         
            +
              }
         
     | 
| 
      
 61 
     | 
    
         
            +
             
     | 
| 
      
 62 
     | 
    
         
            +
              #logo:hover {
         
     | 
| 
      
 63 
     | 
    
         
            +
                color: #fff;
         
     | 
| 
      
 64 
     | 
    
         
            +
                text-decoration: none;
         
     | 
| 
      
 65 
     | 
    
         
            +
              }
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
              /* footer */
         
     | 
| 
      
 68 
     | 
    
         
            +
              footer {
         
     | 
| 
      
 69 
     | 
    
         
            +
                margin-top: 45px;
         
     | 
| 
      
 70 
     | 
    
         
            +
                padding-top: 5px;
         
     | 
| 
      
 71 
     | 
    
         
            +
                border-top: 1px solid #eaeaea;
         
     | 
| 
      
 72 
     | 
    
         
            +
                color: #777;
         
     | 
| 
      
 73 
     | 
    
         
            +
              }
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
              footer a {
         
     | 
| 
      
 76 
     | 
    
         
            +
                color: #555;
         
     | 
| 
      
 77 
     | 
    
         
            +
              }
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
              footer a:hover {
         
     | 
| 
      
 80 
     | 
    
         
            +
                color: #222;
         
     | 
| 
      
 81 
     | 
    
         
            +
              }
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
              footer small {
         
     | 
| 
      
 84 
     | 
    
         
            +
                float: left;
         
     | 
| 
      
 85 
     | 
    
         
            +
              }
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
              footer ul {
         
     | 
| 
      
 88 
     | 
    
         
            +
                float: right;
         
     | 
| 
      
 89 
     | 
    
         
            +
                list-style: none;
         
     | 
| 
      
 90 
     | 
    
         
            +
              }
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
              footer ul li {
         
     | 
| 
      
 93 
     | 
    
         
            +
                float: left;
         
     | 
| 
      
 94 
     | 
    
         
            +
                margin-left: 15px;
         
     | 
| 
      
 95 
     | 
    
         
            +
              }
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
              /* miscellaneous */
         
     | 
| 
      
 98 
     | 
    
         
            +
              .debug_dump {
         
     | 
| 
      
 99 
     | 
    
         
            +
                clear: both;
         
     | 
| 
      
 100 
     | 
    
         
            +
                float: left;
         
     | 
| 
      
 101 
     | 
    
         
            +
                width: 100%;
         
     | 
| 
      
 102 
     | 
    
         
            +
                margin-top: 45px;
         
     | 
| 
      
 103 
     | 
    
         
            +
                -moz-box-sizing: border-box;
         
     | 
| 
      
 104 
     | 
    
         
            +
                -webkit-box-sizing: border-box;
         
     | 
| 
      
 105 
     | 
    
         
            +
                box-sizing: border-box;
         
     | 
| 
      
 106 
     | 
    
         
            +
              }
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
              /* sidebar */
         
     | 
| 
      
 109 
     | 
    
         
            +
              aside section.user_info {
         
     | 
| 
      
 110 
     | 
    
         
            +
                margin-top: 20px;
         
     | 
| 
      
 111 
     | 
    
         
            +
              }
         
     | 
| 
      
 112 
     | 
    
         
            +
              aside section {
         
     | 
| 
      
 113 
     | 
    
         
            +
                padding: 10px 0;
         
     | 
| 
      
 114 
     | 
    
         
            +
                margin-top: 20px;
         
     | 
| 
      
 115 
     | 
    
         
            +
              }
         
     | 
| 
      
 116 
     | 
    
         
            +
              aside section:first-child {
         
     | 
| 
      
 117 
     | 
    
         
            +
                border: 0;
         
     | 
| 
      
 118 
     | 
    
         
            +
                padding-top: 0;
         
     | 
| 
      
 119 
     | 
    
         
            +
              }
         
     | 
| 
      
 120 
     | 
    
         
            +
              aside section span {
         
     | 
| 
      
 121 
     | 
    
         
            +
                display: block;
         
     | 
| 
      
 122 
     | 
    
         
            +
                margin-bottom: 3px;
         
     | 
| 
      
 123 
     | 
    
         
            +
                line-height: 1;
         
     | 
| 
      
 124 
     | 
    
         
            +
              }
         
     | 
| 
      
 125 
     | 
    
         
            +
              aside section h1 {
         
     | 
| 
      
 126 
     | 
    
         
            +
                font-size: 1.4em;
         
     | 
| 
      
 127 
     | 
    
         
            +
                text-align: left;
         
     | 
| 
      
 128 
     | 
    
         
            +
                letter-spacing: -1px;
         
     | 
| 
      
 129 
     | 
    
         
            +
                margin-bottom: 3px;
         
     | 
| 
      
 130 
     | 
    
         
            +
                margin-top: 0px;
         
     | 
| 
      
 131 
     | 
    
         
            +
              }
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
              .gravatar {
         
     | 
| 
      
 134 
     | 
    
         
            +
                float: left;
         
     | 
| 
      
 135 
     | 
    
         
            +
                margin-right: 10px;
         
     | 
| 
      
 136 
     | 
    
         
            +
              }
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
              .gravatar_edit {
         
     | 
| 
      
 139 
     | 
    
         
            +
                margin-top: 15px;
         
     | 
| 
      
 140 
     | 
    
         
            +
              }
         
     | 
| 
      
 141 
     | 
    
         
            +
             
     | 
| 
      
 142 
     | 
    
         
            +
              .stats {
         
     | 
| 
      
 143 
     | 
    
         
            +
                overflow: auto;
         
     | 
| 
      
 144 
     | 
    
         
            +
                margin-top: 0;
         
     | 
| 
      
 145 
     | 
    
         
            +
                padding: 0;
         
     | 
| 
      
 146 
     | 
    
         
            +
              }
         
     | 
| 
      
 147 
     | 
    
         
            +
              .stats a {
         
     | 
| 
      
 148 
     | 
    
         
            +
                float: left;
         
     | 
| 
      
 149 
     | 
    
         
            +
                padding: 0 10px;
         
     | 
| 
      
 150 
     | 
    
         
            +
                border-left: 1px solid #222;
         
     | 
| 
      
 151 
     | 
    
         
            +
                color: gray;
         
     | 
| 
      
 152 
     | 
    
         
            +
              }
         
     | 
| 
      
 153 
     | 
    
         
            +
              .stats a:first-child {
         
     | 
| 
      
 154 
     | 
    
         
            +
                padding-left: 0;
         
     | 
| 
      
 155 
     | 
    
         
            +
                border: 0;
         
     | 
| 
      
 156 
     | 
    
         
            +
              }
         
     | 
| 
      
 157 
     | 
    
         
            +
              .stats a:hover {
         
     | 
| 
      
 158 
     | 
    
         
            +
                text-decoration: none;
         
     | 
| 
      
 159 
     | 
    
         
            +
                color: blue;
         
     | 
| 
      
 160 
     | 
    
         
            +
              }
         
     | 
| 
      
 161 
     | 
    
         
            +
              .stats strong {
         
     | 
| 
      
 162 
     | 
    
         
            +
                display: block;
         
     | 
| 
      
 163 
     | 
    
         
            +
              }
         
     | 
| 
      
 164 
     | 
    
         
            +
             
     | 
| 
      
 165 
     | 
    
         
            +
              .user_avatars {
         
     | 
| 
      
 166 
     | 
    
         
            +
                overflow: auto;
         
     | 
| 
      
 167 
     | 
    
         
            +
                margin-top: 10px;
         
     | 
| 
      
 168 
     | 
    
         
            +
              }
         
     | 
| 
      
 169 
     | 
    
         
            +
              .user_avatars .gravatar {
         
     | 
| 
      
 170 
     | 
    
         
            +
                margin: 1px 1px;
         
     | 
| 
      
 171 
     | 
    
         
            +
              }
         
     | 
| 
      
 172 
     | 
    
         
            +
              .user_avatars a {
         
     | 
| 
      
 173 
     | 
    
         
            +
                padding: 0;
         
     | 
| 
      
 174 
     | 
    
         
            +
              }
         
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
      
 176 
     | 
    
         
            +
              .users.follow {
         
     | 
| 
      
 177 
     | 
    
         
            +
                padding: 0;
         
     | 
| 
      
 178 
     | 
    
         
            +
              }
         
     | 
| 
      
 179 
     | 
    
         
            +
             
     | 
| 
      
 180 
     | 
    
         
            +
              /* forms */
         
     | 
| 
      
 181 
     | 
    
         
            +
              input, textarea, select, .uneditable-input {
         
     | 
| 
      
 182 
     | 
    
         
            +
                border: 1px solid #bbb;
         
     | 
| 
      
 183 
     | 
    
         
            +
                width: 100%;
         
     | 
| 
      
 184 
     | 
    
         
            +
                margin-bottom: 15px;
         
     | 
| 
      
 185 
     | 
    
         
            +
                -moz-box-sizing: border-box;
         
     | 
| 
      
 186 
     | 
    
         
            +
                -webkit-box-sizing: border-box;
         
     | 
| 
      
 187 
     | 
    
         
            +
                box-sizing: border-box;
         
     | 
| 
      
 188 
     | 
    
         
            +
              }
         
     | 
| 
      
 189 
     | 
    
         
            +
             
     | 
| 
      
 190 
     | 
    
         
            +
              input {
         
     | 
| 
      
 191 
     | 
    
         
            +
                height: auto !important;
         
     | 
| 
      
 192 
     | 
    
         
            +
              }
         
     | 
| 
      
 193 
     | 
    
         
            +
             
     | 
| 
      
 194 
     | 
    
         
            +
              #error_explanation {
         
     | 
| 
      
 195 
     | 
    
         
            +
                color: red;
         
     | 
| 
      
 196 
     | 
    
         
            +
              }
         
     | 
| 
      
 197 
     | 
    
         
            +
              #error_explanation ul {
         
     | 
| 
      
 198 
     | 
    
         
            +
                color: red;
         
     | 
| 
      
 199 
     | 
    
         
            +
                margin: 0 0 30px 0;
         
     | 
| 
      
 200 
     | 
    
         
            +
              }
         
     | 
| 
      
 201 
     | 
    
         
            +
             
     | 
| 
      
 202 
     | 
    
         
            +
              .field_with_errors .form-control {
         
     | 
| 
      
 203 
     | 
    
         
            +
                color: #a94442;
         
     | 
| 
      
 204 
     | 
    
         
            +
              }
         
     | 
| 
      
 205 
     | 
    
         
            +
             
     | 
| 
      
 206 
     | 
    
         
            +
              .checkbox {
         
     | 
| 
      
 207 
     | 
    
         
            +
                margin-top: -10px;
         
     | 
| 
      
 208 
     | 
    
         
            +
                margin-bottom: 10px;
         
     | 
| 
      
 209 
     | 
    
         
            +
              }
         
     | 
| 
      
 210 
     | 
    
         
            +
              .checkbox span {
         
     | 
| 
      
 211 
     | 
    
         
            +
                margin-left: 20px;
         
     | 
| 
      
 212 
     | 
    
         
            +
                font-weight: normal;
         
     | 
| 
      
 213 
     | 
    
         
            +
              }
         
     | 
| 
      
 214 
     | 
    
         
            +
             
     | 
| 
      
 215 
     | 
    
         
            +
              #session_remember_me {
         
     | 
| 
      
 216 
     | 
    
         
            +
                width: auto;
         
     | 
| 
      
 217 
     | 
    
         
            +
                margin-left: 0;
         
     | 
| 
      
 218 
     | 
    
         
            +
              }
         
     | 
| 
      
 219 
     | 
    
         
            +
             
     | 
| 
      
 220 
     | 
    
         
            +
              /* Users index */
         
     | 
| 
      
 221 
     | 
    
         
            +
              .users {
         
     | 
| 
      
 222 
     | 
    
         
            +
                list-style: none;
         
     | 
| 
      
 223 
     | 
    
         
            +
                margin: 0;
         
     | 
| 
      
 224 
     | 
    
         
            +
              }
         
     | 
| 
      
 225 
     | 
    
         
            +
              .users li {
         
     | 
| 
      
 226 
     | 
    
         
            +
                overflow: auto;
         
     | 
| 
      
 227 
     | 
    
         
            +
                padding: 10px 0;
         
     | 
| 
      
 228 
     | 
    
         
            +
                border-bottom: 1px solid #222;
         
     | 
| 
      
 229 
     | 
    
         
            +
              }
         
     | 
| 
      
 230 
     | 
    
         
            +
             
     | 
| 
      
 231 
     | 
    
         
            +
             
     | 
| 
      
 232 
     | 
    
         
            +
            </style>
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!DOCTYPE html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <html>
         
     | 
| 
      
 3 
     | 
    
         
            +
            <head>
         
     | 
| 
      
 4 
     | 
    
         
            +
              <title><%= full_title(yield(:title)) %></title>
         
     | 
| 
      
 5 
     | 
    
         
            +
              <%= csrf_meta_tags %>
         
     | 
| 
      
 6 
     | 
    
         
            +
              <%= stylesheet_link_tag    'application', media: 'all',
         
     | 
| 
      
 7 
     | 
    
         
            +
                                         'data-turbolinks-track': 'reload' %>
         
     | 
| 
      
 8 
     | 
    
         
            +
              <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
         
     | 
| 
      
 9 
     | 
    
         
            +
              <%= render 'layouts/signup/shim' %>
         
     | 
| 
      
 10 
     | 
    
         
            +
              <%= render 'layouts/signup/inline_css' %>
         
     | 
| 
      
 11 
     | 
    
         
            +
            </head>
         
     | 
| 
      
 12 
     | 
    
         
            +
            <body>
         
     | 
| 
      
 13 
     | 
    
         
            +
            <%= render 'layouts/signup/header' %>
         
     | 
| 
      
 14 
     | 
    
         
            +
            <div class="container">
         
     | 
| 
      
 15 
     | 
    
         
            +
              <%= yield %>
         
     | 
| 
      
 16 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 17 
     | 
    
         
            +
            </body>
         
     | 
| 
      
 18 
     | 
    
         
            +
            </html>
         
     | 
| 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <% provide(:title, 'Log in') %>
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            <div class="row">
         
     | 
| 
      
 4 
     | 
    
         
            +
              <div class="col-md-6 col-md-offset-3">
         
     | 
| 
      
 5 
     | 
    
         
            +
                <%= render partial: 'signup/shared/flash_notice' %>
         
     | 
| 
      
 6 
     | 
    
         
            +
                <h1>Log in </h1>
         
     | 
| 
      
 7 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 8 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            <div class="row">
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              <div class="col-md-6 col-md-offset-3">
         
     | 
| 
      
 13 
     | 
    
         
            +
                <%= form_for(:session, url: login_path) do |f| %>
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                    <%= f.label :email %>
         
     | 
| 
      
 16 
     | 
    
         
            +
                    <%= f.email_field :email, class: 'form-control' %>
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                    <%= f.label :password %>
         
     | 
| 
      
 19 
     | 
    
         
            +
                    <%= f.password_field :password, class: 'form-control' %>
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                    <%= f.label :remember_me, class: "checkbox inline" do %>
         
     | 
| 
      
 22 
     | 
    
         
            +
                        <%= f.check_box :remember_me %>
         
     | 
| 
      
 23 
     | 
    
         
            +
                        <span>Remember me on this computer</span>
         
     | 
| 
      
 24 
     | 
    
         
            +
                    <% end %>
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                    <%= f.submit 'Log in', class: 'btn btn-primary' %>
         
     | 
| 
      
 27 
     | 
    
         
            +
                <% end %>
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                <p>New user? <%= link_to 'Sign up now!', signup_path %></p>
         
     | 
| 
      
 30 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 31 
     | 
    
         
            +
            </div>
         
     | 
| 
         @@ -0,0 +1,62 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <% provide(:title, 'Sign up') %>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <div class="row">
         
     | 
| 
      
 3 
     | 
    
         
            +
              <div class="col-md-6 col-md-offset-3">
         
     | 
| 
      
 4 
     | 
    
         
            +
                <%= render partial: 'signup/shared/flash_notice' %>
         
     | 
| 
      
 5 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 6 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 7 
     | 
    
         
            +
            <div class="row">
         
     | 
| 
      
 8 
     | 
    
         
            +
              <div class="col-md-6 col-md-offset-3">
         
     | 
| 
      
 9 
     | 
    
         
            +
                <%= form_for(user) do |f| %>
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                    <% if user.errors.any? %>
         
     | 
| 
      
 12 
     | 
    
         
            +
                        <div id="error_explanation">
         
     | 
| 
      
 13 
     | 
    
         
            +
                          <h2><%= pluralize(user.errors.count, "error") %> prohibited this user from being saved:</h2>
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                          <ul>
         
     | 
| 
      
 16 
     | 
    
         
            +
                            <% user.errors.full_messages.each do |message| %>
         
     | 
| 
      
 17 
     | 
    
         
            +
                                <li><%= message %></li>
         
     | 
| 
      
 18 
     | 
    
         
            +
                            <% end %>
         
     | 
| 
      
 19 
     | 
    
         
            +
                          </ul>
         
     | 
| 
      
 20 
     | 
    
         
            +
                        </div>
         
     | 
| 
      
 21 
     | 
    
         
            +
                    <% end %>
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                    <div class="field">
         
     | 
| 
      
 24 
     | 
    
         
            +
                      <%= f.label :firstname %>
         
     | 
| 
      
 25 
     | 
    
         
            +
                      <%= f.text_field :firstname, required: 'require', class: 'form-control' %>
         
     | 
| 
      
 26 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                    <div class="field">
         
     | 
| 
      
 29 
     | 
    
         
            +
                      <%= f.label :lastname %>
         
     | 
| 
      
 30 
     | 
    
         
            +
                      <%= f.text_field :lastname, required: 'require', class: 'form-control' %>
         
     | 
| 
      
 31 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                    <div class="field">
         
     | 
| 
      
 34 
     | 
    
         
            +
                      <%= f.label :email %>
         
     | 
| 
      
 35 
     | 
    
         
            +
                      <%= f.email_field :email, required: 'require', class: 'form-control' %>
         
     | 
| 
      
 36 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                    <div class="field">
         
     | 
| 
      
 39 
     | 
    
         
            +
                      <%= f.label :password %>
         
     | 
| 
      
 40 
     | 
    
         
            +
                      <%= f.password_field :password, required: 'require', class: 'form-control' %>
         
     | 
| 
      
 41 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                    <div class="field">
         
     | 
| 
      
 44 
     | 
    
         
            +
                      <%= f.label :password_confirmation %>
         
     | 
| 
      
 45 
     | 
    
         
            +
                      <%= f.password_field :password_confirmation, required: 'require', class: 'form-control' %>
         
     | 
| 
      
 46 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                    <% if current_user.admin? %>
         
     | 
| 
      
 49 
     | 
    
         
            +
                        <%= f.label :admin, class: 'checkbox inline' do %>
         
     | 
| 
      
 50 
     | 
    
         
            +
                            <%= f.check_box :admin %>
         
     | 
| 
      
 51 
     | 
    
         
            +
                            <span>Administrator</span>
         
     | 
| 
      
 52 
     | 
    
         
            +
                        <% end %>
         
     | 
| 
      
 53 
     | 
    
         
            +
                    <% else %>
         
     | 
| 
      
 54 
     | 
    
         
            +
                        <%= f.hidden_field :admin, value: 0, required: 'required' %>
         
     | 
| 
      
 55 
     | 
    
         
            +
                    <% end %>
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                    <div class="actions">
         
     | 
| 
      
 58 
     | 
    
         
            +
                      <%= f.submit 'Create new account', class: 'btn btn-primary' %>
         
     | 
| 
      
 59 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 60 
     | 
    
         
            +
                <% end %>
         
     | 
| 
      
 61 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 62 
     | 
    
         
            +
            </div>
         
     | 
| 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <h1>Editing User</h1>
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            <%= render 'form', user: @user %>
         
     | 
| 
      
 4 
     | 
    
         
            +
            <br/>
         
     | 
| 
      
 5 
     | 
    
         
            +
            <div class="row">
         
     | 
| 
      
 6 
     | 
    
         
            +
              <div class="col-md-6 col-md-offset-3">
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                <%= link_to 'Show', @user, class: 'btn btn-info' %> |
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                <% if admin? %>
         
     | 
| 
      
 11 
     | 
    
         
            +
                    <%= link_to 'Back', users_path, class: 'btn btn-primary' %>
         
     | 
| 
      
 12 
     | 
    
         
            +
                <% else %>
         
     | 
| 
      
 13 
     | 
    
         
            +
                    <% if main_app.admin_dashboard_path %>
         
     | 
| 
      
 14 
     | 
    
         
            +
                        <%= link_to 'Back', main_app.admin_dashboard_path, class: 'btn btn-primary' %>
         
     | 
| 
      
 15 
     | 
    
         
            +
                    <% else %>
         
     | 
| 
      
 16 
     | 
    
         
            +
                        <%= link_to 'Back', main_app.root_path, class: 'btn btn-primary' %>
         
     | 
| 
      
 17 
     | 
    
         
            +
                    <% end %>
         
     | 
| 
      
 18 
     | 
    
         
            +
                <% end %>
         
     | 
| 
      
 19 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 20 
     | 
    
         
            +
            </div>
         
     | 
| 
         @@ -0,0 +1,35 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <%= render partial: 'signup/shared/flash_notice' %>
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            <h1>Users</h1>
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            <table>
         
     | 
| 
      
 6 
     | 
    
         
            +
              <thead>
         
     | 
| 
      
 7 
     | 
    
         
            +
                <tr>
         
     | 
| 
      
 8 
     | 
    
         
            +
                  <th>Firstname</th>
         
     | 
| 
      
 9 
     | 
    
         
            +
                  <th>Lastname</th>
         
     | 
| 
      
 10 
     | 
    
         
            +
                  <th>Email</th>
         
     | 
| 
      
 11 
     | 
    
         
            +
                  <th>Remember</th>
         
     | 
| 
      
 12 
     | 
    
         
            +
                  <th>Admin</th>
         
     | 
| 
      
 13 
     | 
    
         
            +
                  <th colspan="3"></th>
         
     | 
| 
      
 14 
     | 
    
         
            +
                </tr>
         
     | 
| 
      
 15 
     | 
    
         
            +
              </thead>
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              <tbody>
         
     | 
| 
      
 18 
     | 
    
         
            +
                <% @users.each do |user| %>
         
     | 
| 
      
 19 
     | 
    
         
            +
                  <tr>
         
     | 
| 
      
 20 
     | 
    
         
            +
                    <td><%= user.firstname %></td>
         
     | 
| 
      
 21 
     | 
    
         
            +
                    <td><%= user.lastname %></td>
         
     | 
| 
      
 22 
     | 
    
         
            +
                    <td><%= user.email %></td>
         
     | 
| 
      
 23 
     | 
    
         
            +
                    <td><% if user.remember_digest %>true<% else %>false<% end %></td>
         
     | 
| 
      
 24 
     | 
    
         
            +
                    <td><%= user.admin %></td>
         
     | 
| 
      
 25 
     | 
    
         
            +
                    <td><%= link_to 'Show', user %></td>
         
     | 
| 
      
 26 
     | 
    
         
            +
                    <td><%= link_to 'Edit', edit_user_path(user) %></td>
         
     | 
| 
      
 27 
     | 
    
         
            +
                    <td><%= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you sure?' } %></td>
         
     | 
| 
      
 28 
     | 
    
         
            +
                  </tr>
         
     | 
| 
      
 29 
     | 
    
         
            +
                <% end %>
         
     | 
| 
      
 30 
     | 
    
         
            +
              </tbody>
         
     | 
| 
      
 31 
     | 
    
         
            +
            </table>
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            <br>
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            <%= link_to 'New User', new_user_path %>
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <h1>New User</h1>
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            <%= render 'form', user: @user %>
         
     | 
| 
      
 4 
     | 
    
         
            +
            <br/>
         
     | 
| 
      
 5 
     | 
    
         
            +
            <div class="row">
         
     | 
| 
      
 6 
     | 
    
         
            +
              <div class="col-md-6 col-md-offset-3">
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                <% if admin? %>
         
     | 
| 
      
 9 
     | 
    
         
            +
                    <%= link_to 'Back', users_path, class: 'btn btn-block btn-info' %>
         
     | 
| 
      
 10 
     | 
    
         
            +
                <% else %>
         
     | 
| 
      
 11 
     | 
    
         
            +
                    <% if main_app.admin_dashboard_path %>
         
     | 
| 
      
 12 
     | 
    
         
            +
                        <%= link_to 'Back', main_app.admin_dashboard_path, class: 'btn btn-block btn-info' %>
         
     | 
| 
      
 13 
     | 
    
         
            +
                    <% else %>
         
     | 
| 
      
 14 
     | 
    
         
            +
                        <%= link_to 'Back', main_app.root_path, class: 'btn btn-block btn-info' %>
         
     | 
| 
      
 15 
     | 
    
         
            +
                    <% end %>
         
     | 
| 
      
 16 
     | 
    
         
            +
                <% end %>
         
     | 
| 
      
 17 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 18 
     | 
    
         
            +
            </div>
         
     | 
| 
         @@ -0,0 +1,38 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <% provide(:title, 'User') %>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <%= render partial: 'signup/shared/flash_notice' %>
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            <div class="row">
         
     | 
| 
      
 5 
     | 
    
         
            +
              <div class="col-md-6 col-md-offset-3">
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                <p>
         
     | 
| 
      
 8 
     | 
    
         
            +
                  <strong>Firstname:</strong>
         
     | 
| 
      
 9 
     | 
    
         
            +
                  <%= @user.firstname %>
         
     | 
| 
      
 10 
     | 
    
         
            +
                </p>
         
     | 
| 
      
 11 
     | 
    
         
            +
                <p>
         
     | 
| 
      
 12 
     | 
    
         
            +
                  <strong>Lastname:</strong>
         
     | 
| 
      
 13 
     | 
    
         
            +
                  <%= @user.lastname %>
         
     | 
| 
      
 14 
     | 
    
         
            +
                </p>
         
     | 
| 
      
 15 
     | 
    
         
            +
                <p>
         
     | 
| 
      
 16 
     | 
    
         
            +
                  <strong>Email:</strong>
         
     | 
| 
      
 17 
     | 
    
         
            +
                  <%= @user.email %>
         
     | 
| 
      
 18 
     | 
    
         
            +
                </p>
         
     | 
| 
      
 19 
     | 
    
         
            +
                <% if admin? %>
         
     | 
| 
      
 20 
     | 
    
         
            +
                    <p>
         
     | 
| 
      
 21 
     | 
    
         
            +
                      <strong>Admin:</strong>
         
     | 
| 
      
 22 
     | 
    
         
            +
                      <%= @user.admin %>
         
     | 
| 
      
 23 
     | 
    
         
            +
                    </p>
         
     | 
| 
      
 24 
     | 
    
         
            +
                <% end %>
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                <%= link_to 'Edit', edit_user_path(@user), class: 'btn btn-info' %> |
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                <% if admin? %>
         
     | 
| 
      
 29 
     | 
    
         
            +
                    <%= link_to 'Back', users_path, class: 'btn btn-primary' %>
         
     | 
| 
      
 30 
     | 
    
         
            +
                <% else %>
         
     | 
| 
      
 31 
     | 
    
         
            +
                    <% if main_app.admin_dashboard_path %>
         
     | 
| 
      
 32 
     | 
    
         
            +
                        <%= link_to 'Back', main_app.admin_dashboard_path, class: 'btn btn-primary' %>
         
     | 
| 
      
 33 
     | 
    
         
            +
                    <% else %>
         
     | 
| 
      
 34 
     | 
    
         
            +
                        <%= link_to 'Back', main_app.root_path, class: 'btn btn-primary' %>
         
     | 
| 
      
 35 
     | 
    
         
            +
                    <% end %>
         
     | 
| 
      
 36 
     | 
    
         
            +
                <% end %>
         
     | 
| 
      
 37 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 38 
     | 
    
         
            +
            </div>
         
     | 
| 
         @@ -0,0 +1,59 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <% provide(:title, 'Sign up') %>
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            <div class="row">
         
     | 
| 
      
 4 
     | 
    
         
            +
              <div class="col-md-6 col-md-offset-3">
         
     | 
| 
      
 5 
     | 
    
         
            +
                <%= render partial: 'signup/shared/flash_notice' %>
         
     | 
| 
      
 6 
     | 
    
         
            +
                <h1>Sign up</h1>
         
     | 
| 
      
 7 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 8 
     | 
    
         
            +
            </div>
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            <div class="row">
         
     | 
| 
      
 11 
     | 
    
         
            +
              <div class="col-md-6 col-md-offset-3">
         
     | 
| 
      
 12 
     | 
    
         
            +
                <%= form_for @user do |f| %>
         
     | 
| 
      
 13 
     | 
    
         
            +
                    <% if @user.errors.any? %>
         
     | 
| 
      
 14 
     | 
    
         
            +
                        <div id="error_explanation">
         
     | 
| 
      
 15 
     | 
    
         
            +
                          <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                          <ul>
         
     | 
| 
      
 18 
     | 
    
         
            +
                            <% @user.errors.full_messages.each do |message| %>
         
     | 
| 
      
 19 
     | 
    
         
            +
                                <li><%= message %></li>
         
     | 
| 
      
 20 
     | 
    
         
            +
                            <% end %>
         
     | 
| 
      
 21 
     | 
    
         
            +
                          </ul>
         
     | 
| 
      
 22 
     | 
    
         
            +
                        </div>
         
     | 
| 
      
 23 
     | 
    
         
            +
                    <% end %>
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                    <div class="field">
         
     | 
| 
      
 26 
     | 
    
         
            +
                      <%= f.label :firstname %>
         
     | 
| 
      
 27 
     | 
    
         
            +
                      <%= f.text_field :firstname, required: 'require', class: 'form-control' %>
         
     | 
| 
      
 28 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                    <div class="field">
         
     | 
| 
      
 31 
     | 
    
         
            +
                      <%= f.label :lastname %>
         
     | 
| 
      
 32 
     | 
    
         
            +
                      <%= f.text_field :lastname, required: 'require', class: 'form-control'  %>
         
     | 
| 
      
 33 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                    <div class="field">
         
     | 
| 
      
 36 
     | 
    
         
            +
                      <%= f.label :email %>
         
     | 
| 
      
 37 
     | 
    
         
            +
                      <%= f.email_field :email, required: 'require', class: 'form-control'  %>
         
     | 
| 
      
 38 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                    <div class="field">
         
     | 
| 
      
 41 
     | 
    
         
            +
                      <%= f.label :password %>
         
     | 
| 
      
 42 
     | 
    
         
            +
                      <%= f.password_field :password, required: 'require', class: 'form-control'  %>
         
     | 
| 
      
 43 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                    <div class="field">
         
     | 
| 
      
 46 
     | 
    
         
            +
                      <%= f.label :password_confirmation %>
         
     | 
| 
      
 47 
     | 
    
         
            +
                      <%= f.password_field :password_confirmation, required: 'require', class: 'form-control'  %>
         
     | 
| 
      
 48 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                    <div class="field">
         
     | 
| 
      
 51 
     | 
    
         
            +
                      <%= f.hidden_field :admin, value: 0, required: 'required' %>
         
     | 
| 
      
 52 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                    <div class="actions">
         
     | 
| 
      
 55 
     | 
    
         
            +
                      <%= f.submit 'Create my account', class: 'btn btn-primary' %>
         
     | 
| 
      
 56 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 57 
     | 
    
         
            +
                <% end %>
         
     | 
| 
      
 58 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 59 
     | 
    
         
            +
            </div>
         
     | 
    
        data/config/routes.rb
    ADDED
    
    | 
         @@ -0,0 +1,9 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Signup::Engine.routes.draw do
         
     | 
| 
      
 2 
     | 
    
         
            +
              resources :users
         
     | 
| 
      
 3 
     | 
    
         
            +
              resources :sessions, only: [:new, :create, :destroy]
         
     | 
| 
      
 4 
     | 
    
         
            +
              get 'signup', to: 'users#signup', as: 'signup'
         
     | 
| 
      
 5 
     | 
    
         
            +
              post 'signup', to: 'users#create'
         
     | 
| 
      
 6 
     | 
    
         
            +
              get 'login', to: 'sessions#new', as: 'login'
         
     | 
| 
      
 7 
     | 
    
         
            +
              post 'login', to: 'sessions#create'
         
     | 
| 
      
 8 
     | 
    
         
            +
              get 'logout', to: 'sessions#destroy', as: 'logout'
         
     | 
| 
      
 9 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class CreateSignupUsers < ActiveRecord::Migration[5.0]
         
     | 
| 
      
 2 
     | 
    
         
            +
              def change
         
     | 
| 
      
 3 
     | 
    
         
            +
                create_table :signup_users do |t|
         
     | 
| 
      
 4 
     | 
    
         
            +
                  t.string :firstname
         
     | 
| 
      
 5 
     | 
    
         
            +
                  t.string :lastname
         
     | 
| 
      
 6 
     | 
    
         
            +
                  t.string :email
         
     | 
| 
      
 7 
     | 
    
         
            +
                  t.string :password_digest
         
     | 
| 
      
 8 
     | 
    
         
            +
                  t.string :remember_digest
         
     | 
| 
      
 9 
     | 
    
         
            +
                  t.boolean :admin
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                  t.timestamps
         
     | 
| 
      
 12 
     | 
    
         
            +
                  t.index ['email'], name: 'index_users_on_email', unique: true
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
    
        data/db/seeds.rb
    ADDED
    
    | 
         @@ -0,0 +1,9 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # This file should contain all the record creation needed to seed the database with its default values.
         
     | 
| 
      
 2 
     | 
    
         
            +
            # The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup).
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Examples:
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            #   movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
         
     | 
| 
      
 7 
     | 
    
         
            +
            #   Character.create(name: 'Luke', movie: movies.first)
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            Signup::User.create(firstname: 'Rails', lastname: 'Administrator', password: 'secret',email:'admin@signup.com',admin: true)
         
     | 
    
        data/lib/signup.rb
    ADDED
    
    
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'bcrypt'
         
     | 
| 
      
 2 
     | 
    
         
            +
            module Signup
         
     | 
| 
      
 3 
     | 
    
         
            +
              class Engine < ::Rails::Engine
         
     | 
| 
      
 4 
     | 
    
         
            +
                isolate_namespace Signup
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                config.generators do |g|
         
     | 
| 
      
 7 
     | 
    
         
            +
                  g.assets false
         
     | 
| 
      
 8 
     | 
    
         
            +
                end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                initializer :append_migrations do |app|
         
     | 
| 
      
 11 
     | 
    
         
            +
                  unless app.root.to_s.match root.to_s
         
     | 
| 
      
 12 
     | 
    
         
            +
                    config.paths['db/migrate'].expanded.each do |expanded_path|
         
     | 
| 
      
 13 
     | 
    
         
            +
                      app.config.paths['db/migrate'] << expanded_path
         
     | 
| 
      
 14 
     | 
    
         
            +
                    end
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,12 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # desc "Explaining what the task does"
         
     | 
| 
      
 2 
     | 
    
         
            +
            namespace :signup do
         
     | 
| 
      
 3 
     | 
    
         
            +
              task :install do
         
     | 
| 
      
 4 
     | 
    
         
            +
                sh "sudo sed -i '/protect_from_forgery with: :exception/a\
         
     | 
| 
      
 5 
     | 
    
         
            +
                         include Signup::UsersHelper' app/controllers/application_controller.rb"
         
     | 
| 
      
 6 
     | 
    
         
            +
                sh 'echo Signup::Engine.load_seed >> db/seeds.rb'
         
     | 
| 
      
 7 
     | 
    
         
            +
                sh 'rake db:migrate'
         
     | 
| 
      
 8 
     | 
    
         
            +
                sh 'rake db:seed'
         
     | 
| 
      
 9 
     | 
    
         
            +
                sh 'clear'
         
     | 
| 
      
 10 
     | 
    
         
            +
              end
         
     | 
| 
      
 11 
     | 
    
         
            +
            end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,147 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: signup
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.0.0
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors:
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Hasan Mohammad Tanbir
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2017-01-20 00:00:00.000000000 Z
         
     | 
| 
      
 12 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 13 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 14 
     | 
    
         
            +
              name: rails
         
     | 
| 
      
 15 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 16 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 17 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 18 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 19 
     | 
    
         
            +
                    version: 5.0.0
         
     | 
| 
      
 20 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 21 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 22 
     | 
    
         
            +
                    version: 5.0.0.1
         
     | 
| 
      
 23 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 24 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 25 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 26 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 27 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 28 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 29 
     | 
    
         
            +
                    version: 5.0.0
         
     | 
| 
      
 30 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 31 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 32 
     | 
    
         
            +
                    version: 5.0.0.1
         
     | 
| 
      
 33 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 34 
     | 
    
         
            +
              name: bcrypt
         
     | 
| 
      
 35 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 36 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 37 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 38 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 39 
     | 
    
         
            +
                    version: '3.1'
         
     | 
| 
      
 40 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 41 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 42 
     | 
    
         
            +
                    version: 3.1.11
         
     | 
| 
      
 43 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 44 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 45 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 46 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 47 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
      
 48 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 49 
     | 
    
         
            +
                    version: '3.1'
         
     | 
| 
      
 50 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 51 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 52 
     | 
    
         
            +
                    version: 3.1.11
         
     | 
| 
      
 53 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 54 
     | 
    
         
            +
              name: sqlite3
         
     | 
| 
      
 55 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 56 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 57 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 58 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 59 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 60 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 61 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 62 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 63 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 64 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 65 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 66 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 67 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 68 
     | 
    
         
            +
              name: bcrypt
         
     | 
| 
      
 69 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 70 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 71 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 72 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 73 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 74 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 75 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 76 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 77 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 78 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 79 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 80 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 81 
     | 
    
         
            +
            description: This gem make authentication very simple
         
     | 
| 
      
 82 
     | 
    
         
            +
            email:
         
     | 
| 
      
 83 
     | 
    
         
            +
            - tanbir2025@gmail.com
         
     | 
| 
      
 84 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 85 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 86 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 87 
     | 
    
         
            +
            files:
         
     | 
| 
      
 88 
     | 
    
         
            +
            - MIT-LICENSE
         
     | 
| 
      
 89 
     | 
    
         
            +
            - README.md
         
     | 
| 
      
 90 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 91 
     | 
    
         
            +
            - app/assets/config/signup_manifest.js
         
     | 
| 
      
 92 
     | 
    
         
            +
            - app/assets/javascripts/application.js
         
     | 
| 
      
 93 
     | 
    
         
            +
            - app/assets/stylesheets/application.css
         
     | 
| 
      
 94 
     | 
    
         
            +
            - app/controllers/signup/application_controller.rb
         
     | 
| 
      
 95 
     | 
    
         
            +
            - app/controllers/signup/sessions_controller.rb
         
     | 
| 
      
 96 
     | 
    
         
            +
            - app/controllers/signup/users_controller.rb
         
     | 
| 
      
 97 
     | 
    
         
            +
            - app/helpers/signup/application_helper.rb
         
     | 
| 
      
 98 
     | 
    
         
            +
            - app/helpers/signup/sessions_helper.rb
         
     | 
| 
      
 99 
     | 
    
         
            +
            - app/helpers/signup/users_helper.rb
         
     | 
| 
      
 100 
     | 
    
         
            +
            - app/jobs/signup/application_job.rb
         
     | 
| 
      
 101 
     | 
    
         
            +
            - app/mailers/signup/application_mailer.rb
         
     | 
| 
      
 102 
     | 
    
         
            +
            - app/models/signup/application_record.rb
         
     | 
| 
      
 103 
     | 
    
         
            +
            - app/models/signup/user.rb
         
     | 
| 
      
 104 
     | 
    
         
            +
            - app/views/layouts/signup/_header.html.erb
         
     | 
| 
      
 105 
     | 
    
         
            +
            - app/views/layouts/signup/_inline_css.html.erb
         
     | 
| 
      
 106 
     | 
    
         
            +
            - app/views/layouts/signup/_shim.html.erb
         
     | 
| 
      
 107 
     | 
    
         
            +
            - app/views/layouts/signup/application.html.erb
         
     | 
| 
      
 108 
     | 
    
         
            +
            - app/views/signup/sessions/new.html.erb
         
     | 
| 
      
 109 
     | 
    
         
            +
            - app/views/signup/shared/_flash_notice.html.erb
         
     | 
| 
      
 110 
     | 
    
         
            +
            - app/views/signup/users/_form.html.erb
         
     | 
| 
      
 111 
     | 
    
         
            +
            - app/views/signup/users/edit.html.erb
         
     | 
| 
      
 112 
     | 
    
         
            +
            - app/views/signup/users/index.html.erb
         
     | 
| 
      
 113 
     | 
    
         
            +
            - app/views/signup/users/new.html.erb
         
     | 
| 
      
 114 
     | 
    
         
            +
            - app/views/signup/users/show.html.erb
         
     | 
| 
      
 115 
     | 
    
         
            +
            - app/views/signup/users/signup.html.erb
         
     | 
| 
      
 116 
     | 
    
         
            +
            - config/routes.rb
         
     | 
| 
      
 117 
     | 
    
         
            +
            - db/migrate/20160930163056_create_signup_users.rb
         
     | 
| 
      
 118 
     | 
    
         
            +
            - db/seeds.rb
         
     | 
| 
      
 119 
     | 
    
         
            +
            - lib/signup.rb
         
     | 
| 
      
 120 
     | 
    
         
            +
            - lib/signup/engine.rb
         
     | 
| 
      
 121 
     | 
    
         
            +
            - lib/signup/version.rb
         
     | 
| 
      
 122 
     | 
    
         
            +
            - lib/tasks/signup_tasks.rake
         
     | 
| 
      
 123 
     | 
    
         
            +
            homepage: https://github.com/bdmade/signup
         
     | 
| 
      
 124 
     | 
    
         
            +
            licenses:
         
     | 
| 
      
 125 
     | 
    
         
            +
            - MIT
         
     | 
| 
      
 126 
     | 
    
         
            +
            metadata: {}
         
     | 
| 
      
 127 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 128 
     | 
    
         
            +
            rdoc_options: []
         
     | 
| 
      
 129 
     | 
    
         
            +
            require_paths:
         
     | 
| 
      
 130 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 131 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 132 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 133 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 134 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 135 
     | 
    
         
            +
                  version: 2.2.2
         
     | 
| 
      
 136 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 137 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 138 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 139 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 140 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 141 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 142 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 143 
     | 
    
         
            +
            rubygems_version: 2.5.1
         
     | 
| 
      
 144 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 145 
     | 
    
         
            +
            specification_version: 4
         
     | 
| 
      
 146 
     | 
    
         
            +
            summary: It is authentication gem.
         
     | 
| 
      
 147 
     | 
    
         
            +
            test_files: []
         
     |