adds management/sessions controller
This commit is contained in:
17
app/controllers/management/sessions_controller.rb
Normal file
17
app/controllers/management/sessions_controller.rb
Normal file
@@ -0,0 +1,17 @@
|
||||
class Management::SessionsController < ActionController::Base
|
||||
|
||||
def create
|
||||
destroy_session
|
||||
if manager = Manager.valid_manager(params[:login], params[:clave_usuario])
|
||||
session["manager_id"] = manager.id
|
||||
redirect_to management_root_path
|
||||
else
|
||||
raise ActionController::RoutingError.new('Not Found')
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
def destroy_session
|
||||
session["manager_id"] = nil
|
||||
end
|
||||
end
|
||||
@@ -4,9 +4,9 @@ class Manager < ActiveRecord::Base
|
||||
|
||||
has_secure_password
|
||||
|
||||
def self.valid_auth?(username = nil, password = nil)
|
||||
def self.valid_manager(username = nil, password = nil)
|
||||
return false unless username.present? && password.present?
|
||||
Manager.find_by(username: username).try(:authenticate, password).present?
|
||||
Manager.find_by(username: username).try(:authenticate, password)
|
||||
end
|
||||
|
||||
end
|
||||
@@ -166,6 +166,9 @@ Rails.application.routes.draw do
|
||||
namespace :management do
|
||||
root to: "dashboard#index"
|
||||
|
||||
get 'sign_in', to: 'sessions#create'
|
||||
|
||||
resources :sessions, only: :create
|
||||
end
|
||||
|
||||
# Example of regular route:
|
||||
|
||||
28
spec/controllers/management/sessions_controller_spec.rb
Normal file
28
spec/controllers/management/sessions_controller_spec.rb
Normal file
@@ -0,0 +1,28 @@
|
||||
require 'rails_helper'
|
||||
|
||||
describe Management::SessionsController do
|
||||
|
||||
before(:all) do
|
||||
create(:manager, username: "supermanager" , password: "secret")
|
||||
end
|
||||
|
||||
describe 'Sign up' do
|
||||
it "should return 404 if not username/password" do
|
||||
expect { get :create }.to raise_error "Not Found"
|
||||
end
|
||||
|
||||
it "should return 404 if wrong username" do
|
||||
expect { get :create, login: "nonexistent" , clave_usuario: "secret" }.to raise_error "Not Found"
|
||||
end
|
||||
|
||||
it "should return 404 if wrong password" do
|
||||
expect { get :create, login: "supermanager" , clave_usuario: "wrong" }.to raise_error "Not Found"
|
||||
end
|
||||
|
||||
it "should redirect to management root path if right credentials" do
|
||||
get :create, login: "supermanager" , clave_usuario: "secret"
|
||||
expect(response).to be_redirect
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
@@ -20,26 +20,26 @@ describe Manager do
|
||||
end
|
||||
end
|
||||
|
||||
describe "self.valid_auth?" do
|
||||
describe "self.valid_manager" do
|
||||
before(:all) { create(:manager, username: "Silvia" ,password: "supersecret") }
|
||||
|
||||
it "is false when username is blank" do
|
||||
expect(Manager.valid_auth?(nil, "supersecret")).to be false
|
||||
expect(Manager.valid_manager(nil, "supersecret")).to be_blank
|
||||
end
|
||||
it "is false when password is blank" do
|
||||
expect(Manager.valid_auth?("Silvia", nil)).to be false
|
||||
expect(Manager.valid_manager("Silvia", nil)).to be_blank
|
||||
end
|
||||
|
||||
it "is false if manager unexistent" do
|
||||
expect(Manager.valid_auth?("Manager", "supersecret")).to be false
|
||||
expect(Manager.valid_manager("Manager", "supersecret")).to be_blank
|
||||
end
|
||||
|
||||
it "is false if wrong password unexistent" do
|
||||
expect(Manager.valid_auth?("Silvia", "wrong")).to be false
|
||||
expect(Manager.valid_manager("Silvia", "wrong")).to be_blank
|
||||
end
|
||||
|
||||
it "is true if right username/password combination" do
|
||||
expect(Manager.valid_auth?("Silvia", "supersecret")).to be true
|
||||
expect(Manager.valid_manager("Silvia", "supersecret")).to be_present
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user