diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 166b19a5..41d1d443 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -17,12 +17,7 @@ class ApplicationController < ActionController::Base # Encontrar un sitio por su nombre def find_site - id = params[:site_id] || params[:id] - - # TODO: encontrar una forma mejor de buscar en todos los sitios en - # lugar de desperdiciar una consulta - current_usuarie.sites.find_by_name(id) || - current_usuarie.sites_as_invitade.find_by_name(id) + current_usuarie.sites.find_by_name(params[:site_id] || params[:id]) # TODO: reenviar a un 403 si el sitio ya no está permitido para le # usuarie diff --git a/app/controllers/usuaries_controller.rb b/app/controllers/usuaries_controller.rb index a937c3e7..7ed088e6 100644 --- a/app/controllers/usuaries_controller.rb +++ b/app/controllers/usuaries_controller.rb @@ -23,8 +23,12 @@ class UsuariesController < ApplicationController @usuarie = Usuarie.find(params[:id]) - # Mágicamente elimina el rol - @usuarie.sites.delete(@site) + if @site.usuaries.count > 1 + # Mágicamente elimina el rol + @usuarie.sites.delete(@site) + else + flash[:warning] = I18n.t('usuaries.index.destroy.denied') + end redirect_to site_usuaries_path end @@ -35,7 +39,12 @@ class UsuariesController < ApplicationController authorize SiteUsuarie.new(@site, current_usuarie) @usuarie = Usuarie.find(params[:usuarie_id]) - @usuarie.rol_for_site(@site).update_attribute :rol, 'invitade' + + if @site.usuaries.count > 1 + @usuarie.rol_for_site(@site).update_attribute :rol, 'invitade' + else + flash[:warning] = I18n.t('usuaries.index.demote.denied') + end redirect_to site_usuaries_path end diff --git a/config/locales/en.yml b/config/locales/en.yml index 4fb01233..3475e70c 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -283,9 +283,11 @@ en: destroy: text: 'Remove access' confirm: "Remove access to this site? The account itself is not deleted, but it won't be able to make changes to this site." + denied: 'The site needs at least one user!' demote: text: 'Convert to guest' confirm: 'Convert to guest? They can only edit their own posts and will need approval from other user to publish them.' + denied: 'The site needs at least one user!' promote: text: 'Convert to user' confirm: 'Convert to user? They will gain full access to self-manage this site.' diff --git a/config/locales/es.yml b/config/locales/es.yml index 6f9f4b2d..77899aed 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -284,9 +284,11 @@ es: destroy: text: 'Quitar acceso' confirm: '¿Quitar acceso a este sitio? La cuenta no será modificada, solo no podrá hacer cambios en este sitio.' + denied: '¡El sitio tiene que tener al menos une usuarie!' demote: text: 'Convertir en invitade' confirm: '¿Convertir en invitade? Solo tendrá acceso a sus propios artículos y necesitará la aprobación de otre usuarie para publicarlos.' + denied: '¡El sitio tiene que tener al menos une usuarie!' promote: text: 'Convertir en usuarie' confirm: '¿Convertir en usuarie? Ganará acceso a la gestión completa del sitio.'