merge with master

This commit is contained in:
kikito
2015-10-08 15:26:33 +02:00
9 changed files with 128 additions and 10 deletions

View File

@@ -1,11 +1,16 @@
class Management::BaseController < ActionController::Base
layout 'admin'
layout 'management'
before_action :verify_manager
private
def verify_manager
raise ActionController::RoutingError.new('Not Found') unless current_manager.present?
end
def current_manager
@current_manager ||= Manager.find(session["manager_id"]) if session["manager_id"]
end
end

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

@@ -0,0 +1,64 @@
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title><%= content_for?(:title) ? yield(:title) : "Admin" %></title>
<%= stylesheet_link_tag "application" %>
<%= javascript_include_tag "vendor/modernizr" %>
<%= javascript_include_tag "application", 'data-turbolinks-track' => true %>
<%= content_for :head %>
<%= csrf_meta_tags %>
<%= favicon_link_tag "favicon.ico" %>
</head>
<body class="admin">
<header class="<%= header_css %>">
<section class="top-links">
<div class="row">
<%= render 'shared/locale_switcher' %>
</div>
</section>
<div class="contain-to-grid clear">
<nav class="top-bar" data-topbar role="navigation">
<ul class="title-area">
<li class="name">
<%= link_to root_path do %>
<%= image_tag('header_logo_madrid.png', class: 'left', size: '96x96') %>
<%= t("layouts.header.open_gov", open: "<strong>#{t('layouts.header.open')}</strong>").html_safe %> <span>|</span> <span class="logo-site"><%= t("management.dashboard.index.title") %></span>
<% end %>
</li>
<li class="toggle-topbar menu-icon"><a href="#"><span></span></a></li>
</ul>
</nav>
</div>
</header>
<div class="row">
<div class="small-12 medium-3 column">
<%= render "/management/menu" %>
</div>
<div class="admin-content small-12 medium-9 column">
<% if notice %>
<div data-alert class="alert-box radius success">
<a href="#" class="close" title="<%= t("application.close") %>">&times;</a>
<%= notice %>
</div>
<% end %>
<% if alert %>
<div data-alert class="alert-box radius alert">
<a href="#" class="close" title="<%= t("application.close") %>">&times;</a>
<%= alert %>
</div>
<% end %>
<%= yield %>
</div>
</div>
</body>
</html>

View File

@@ -24,6 +24,7 @@ data:
- config/locales/%{locale}.yml
- config/locales/admin.%{locale}.yml
- config/locales/moderation.%{locale}.yml
- config/locales/management.%{locale}.yml
- config/locales/verification.%{locale}.yml
- config/locales/mailers.%{locale}.yml
- config/locales/pages.%{locale}.yml

View File

@@ -45,4 +45,3 @@ es:
"Hemos enviado un correo electrónico a <b>%{email}</b> para verificar que es suya.
El correo enviado contiene un link que el usuario deberá pulsar. Entonces podrá seleccionar
una clave de acceso, y entrar en la web de participación."

View File

@@ -181,6 +181,10 @@ Rails.application.routes.draw do
resources :email_verifications, only: [:new, :create]
resources :users, only: [:new, :create]
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