Usar el sistema de autorización de Sutty
Y eliminar código sin utilizar.
This commit is contained in:
parent
71ff9e5e7b
commit
71436d3be4
8 changed files with 15 additions and 47 deletions
|
@ -3,6 +3,7 @@
|
||||||
# Forma de ingreso a Sutty
|
# Forma de ingreso a Sutty
|
||||||
class ApplicationController < ActionController::Base
|
class ApplicationController < ActionController::Base
|
||||||
include ExceptionHandler
|
include ExceptionHandler
|
||||||
|
include Pundit
|
||||||
|
|
||||||
protect_from_forgery with: :null_session, prepend: true
|
protect_from_forgery with: :null_session, prepend: true
|
||||||
|
|
||||||
|
@ -10,6 +11,7 @@ class ApplicationController < ActionController::Base
|
||||||
before_action :configure_permitted_parameters, if: :devise_controller?
|
before_action :configure_permitted_parameters, if: :devise_controller?
|
||||||
around_action :set_locale
|
around_action :set_locale
|
||||||
|
|
||||||
|
rescue_from Pundit::NilPolicyError, with: :page_not_found
|
||||||
rescue_from ActionController::RoutingError, with: :page_not_found
|
rescue_from ActionController::RoutingError, with: :page_not_found
|
||||||
rescue_from ActionController::ParameterMissing, with: :page_not_found
|
rescue_from ActionController::ParameterMissing, with: :page_not_found
|
||||||
|
|
||||||
|
@ -33,7 +35,7 @@ class ApplicationController < ActionController::Base
|
||||||
def find_site
|
def find_site
|
||||||
id = params[:site_id] || params[:id]
|
id = params[:site_id] || params[:id]
|
||||||
|
|
||||||
unless (site = current_usuarie.sites.find_by_name(id))
|
unless (site = current_usuarie&.sites&.find_by_name(id))
|
||||||
raise SiteNotFound
|
raise SiteNotFound
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -66,10 +68,7 @@ class ApplicationController < ActionController::Base
|
||||||
# sitio pueden acceder al panel.
|
# sitio pueden acceder al panel.
|
||||||
def require_usuarie
|
def require_usuarie
|
||||||
site = find_site
|
site = find_site
|
||||||
unless site.usuarie? current_usuarie
|
authorize SiteBlazer.new(site)
|
||||||
redirect_to root_path
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
# Necesario para los breadcrumbs.
|
# Necesario para los breadcrumbs.
|
||||||
ActionView::Base.include Loaf::ViewExtensions unless ActionView::Base.included_modules.include? Loaf::ViewExtensions
|
ActionView::Base.include Loaf::ViewExtensions unless ActionView::Base.included_modules.include? Loaf::ViewExtensions
|
||||||
|
|
|
@ -2,9 +2,6 @@
|
||||||
|
|
||||||
# Controlador para artículos
|
# Controlador para artículos
|
||||||
class PostsController < ApplicationController
|
class PostsController < ApplicationController
|
||||||
include Pundit
|
|
||||||
rescue_from Pundit::NilPolicyError, with: :page_not_found
|
|
||||||
|
|
||||||
before_action :authenticate_usuarie!
|
before_action :authenticate_usuarie!
|
||||||
|
|
||||||
# TODO: Traer los comunes desde ApplicationController
|
# TODO: Traer los comunes desde ApplicationController
|
||||||
|
|
|
@ -6,8 +6,6 @@ class PrivateController < ApplicationController
|
||||||
# XXX: Permite ejecutar JS
|
# XXX: Permite ejecutar JS
|
||||||
skip_forgery_protection
|
skip_forgery_protection
|
||||||
|
|
||||||
include Pundit
|
|
||||||
|
|
||||||
# Enviar el archivo si existe, agregar una / al final siempre para no
|
# Enviar el archivo si existe, agregar una / al final siempre para no
|
||||||
# romper las direcciones relativas.
|
# romper las direcciones relativas.
|
||||||
def show
|
def show
|
||||||
|
|
|
@ -2,9 +2,6 @@
|
||||||
|
|
||||||
# Controlador de sitios
|
# Controlador de sitios
|
||||||
class SitesController < ApplicationController
|
class SitesController < ApplicationController
|
||||||
include Pundit
|
|
||||||
rescue_from Pundit::NilPolicyError, with: :page_not_found
|
|
||||||
|
|
||||||
before_action :authenticate_usuarie!
|
before_action :authenticate_usuarie!
|
||||||
|
|
||||||
breadcrumb -> { current_usuarie.email }, :edit_usuarie_registration_path
|
breadcrumb -> { current_usuarie.email }, :edit_usuarie_registration_path
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
# Estadísticas del sitio
|
|
||||||
class StatsController < ApplicationController
|
|
||||||
include Pundit
|
|
||||||
before_action :authenticate_usuarie!
|
|
||||||
|
|
||||||
def index
|
|
||||||
@site = find_site
|
|
||||||
authorize SiteStat.new(@site)
|
|
||||||
|
|
||||||
# Solo queremos el promedio de tiempo de compilación, no de
|
|
||||||
# instalación de dependencias.
|
|
||||||
stats = @site.build_stats.jekyll
|
|
||||||
@build_avg = stats.average(:seconds).to_f.round(2)
|
|
||||||
@build_max = stats.maximum(:seconds).to_f.round(2)
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,3 +1,3 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
SiteStat = Struct.new(:site)
|
SiteBlazer = Struct.new(:site)
|
10
app/policies/site_blazer_policy.rb
Normal file
10
app/policies/site_blazer_policy.rb
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
# Les invitades no pueden ver las estadísticas (aun)
|
||||||
|
SiteBlazerPolicy = Struct.new(:usuarie, :site_blazer) do
|
||||||
|
def home?
|
||||||
|
site_blazer&.site&.usuarie? usuarie
|
||||||
|
end
|
||||||
|
|
||||||
|
alias_method :show?, :home?
|
||||||
|
end
|
|
@ -1,15 +0,0 @@
|
||||||
# frozen_string_literal: true
|
|
||||||
|
|
||||||
# Política de acceso a las estadísticas
|
|
||||||
class SiteStatPolicy
|
|
||||||
attr_reader :site_stat, :usuarie
|
|
||||||
|
|
||||||
def initialize(usuarie, site_stat)
|
|
||||||
@usuarie = usuarie
|
|
||||||
@site_stat = site_stat
|
|
||||||
end
|
|
||||||
|
|
||||||
def index?
|
|
||||||
site_stat.site.usuarie? usuarie
|
|
||||||
end
|
|
||||||
end
|
|
Loading…
Reference in a new issue