adds management/sessions controller

This commit is contained in:
Juanjo Bazán
2015-10-01 17:53:15 +02:00
parent 442e706ecd
commit 742ea1bd2e
5 changed files with 56 additions and 8 deletions

View 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

View File

@@ -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

View File

@@ -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:

View 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

View File

@@ -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