merge with master
This commit is contained in:
@@ -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
|
||||
|
||||
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
|
||||
64
app/views/layouts/management.html.erb
Normal file
64
app/views/layouts/management.html.erb
Normal 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") %>">×</a>
|
||||
<%= notice %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<% if alert %>
|
||||
<div data-alert class="alert-box radius alert">
|
||||
<a href="#" class="close" title="<%= t("application.close") %>">×</a>
|
||||
<%= alert %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<%= yield %>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -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
|
||||
|
||||
@@ -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."
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
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