Module: Heb412Gen::PermisosHelper

Defined in:
app/helpers/heb412_gen/permisos_helper.rb

Class Method Summary collapse

Class Method Details

.permiso_ver_leer(ruta, carpeta, usuario) ⇒ Object

Concepto de permisos estilo “GMI - Grupo muy importante” (se parece a una sala VIP que dentro puede tener subsalas aún más VIP)

Los administradores y directivos pueden leer y escribir en todas partes. Los demás roles sólo pueden ver directorios y entrar así como descargar

archivos en carpetas que no para GMI, o bien si la carpeta es
exclusiva para uno de los grupos a los que pertenezca el usuario.

La carpeta raíz no es exclusiva. Cuando una carpeta (no raíz) se marca como exclusiva para uno o más grupos, todos sus archivos y subcarpetas recursivamente son exclusivas para esos grupos. Cuando se define la exclusividad de una carpeta para uno o más grupos, sólo puede ser entre los grupos permitidos para la carpeta mamá.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'app/helpers/heb412_gen/permisos_helper.rb', line 18

def permiso_ver_leer(ruta, carpeta, usuario)
  if usuario.rol == Ability::ROLADMIN || usuario.rol == Ability::ROLDIR ||
      ruta == "/"
    return true
  end

  carpetabase = carpeta ? ruta : File.dirname(ruta)
  p = carpetabase.split("/")
  (1..p.length - 1).each do |i|
    e = ""
    (1..i).each do |j|
      e += "/" + p[j]
    end
    # byebug
    if Heb412Gen::Carpetaexclusiva.where(carpeta: e).count > 0 &&
        Heb412Gen::Carpetaexclusiva.where(
          carpeta: e,
          grupo: usuario.grupo,
        ).count == 0
      return false
    end
  end
  true
end