Les Permissions - rodinux/plannings_cinema GitHub Wiki

Ouvrir la boîte de Pandore

On se connecte avec son email et son mot de passe après s'être enregistrer.

Il va vous falloir un compte admin pour accéder à toutes les onglets, sinon, par défaut on s'enregistre en simple visiteur et on a accès à rien de nouveau.

Pour cela, allez dans le fichier

app/views/users/_form.html.erb et vers la ligne 48 :

[...]
   <% if can? :manage, User %>
   <div class="field">
    <%= f.label :role, :value => 'Permissions' %><br>
    <%= f.select :role, User::ROLES %>
  </div>
<% end %>
[...]

Effacez les lignes avec 'if' et 'end' et remplacez le bloc par :

   <div class="field">
    <%= f.label :role, :value => 'Permissions' %><br>
    <%= f.select :role, User::ROLES %>
  </div>

ces lignes que l'on enlève sont les autorisations gérées par cancancan, les permissions sont éditées dans

app/models/ability.rb

class Ability
  include CanCan::Ability

  def initialize(user)
    # Define abilities for the passed in user here. For example:

    user ||= User.new # guest user (not logged in)

    if user.role == "manager"
       can :read, Village
       can :update, User
       can :update, Seance
       cannot :update, Village
       cannot :destroy, User
       cannot :destroy, Seance
    end

    if user.role == "admin"
       can :update, :all
       can :destroy, :all
       can :manage, :all
       can :import, :all
       can :rails_admin
       can :dashboard
    end
    #
    # The first argument to `can` is the action you are giving the user
    # permission to do.
    # If you pass :manage it will apply to every action. Other common actions
    # here are :read, :create, :update and :destroy.
    #
    # The second argument is the resource the user can perform the action on.
    # If you pass :all it will apply to every resource. Otherwise pass a Ruby
    # class of the resource.
    #
    # The third argument is an optional hash of conditions to further filter the
    # objects.
    # For example, here the user can only update published articles.
    #
    #   can :update, Article, :published => true
    #
    # See the wiki for details:
    # https://github.com/CanCanCommunity/cancancan/wiki/Defining-Abilities
  end
end
  • Le role 'guest' n'a droit de voir que ce que le public voit

  • le role 'manager' est pour les bénévoles, ils ne peuvent qu'éditer leur nom dans les champs projection, caisse, commentaires, le nombre d'entrées d'une séance et éditer leur utilisateur, mot de passe, telephone, nom, prénom, email (sauf leur role).

  • le role admin à accès à tout

Donc en enlevant ces lignes, vous pourrez en vous enregistrant vous choisir un role 'admin', puis vous remettez ensuite les balises enlevées précedement.

J'ai choisi de donner les privilèges après que les utilisateurs soient inscrits, ils me préviennent et je leur donne le role de 'manager' ou 'admin' en les éditants.

édition role (permission)

Quelques captures d'écran

( Prises à différentes étapes de l'évolution de l'application, d'où des changements)

Vues pour guest (public) :

Vue de la page d'accueil avec un calendrier et le choix vers des calendriers par lieux.

calendrier visiteur

Vues pour la page Films (mis à jour depuis 3 semaines) avec les films avec les séances correspondantes.

Films du mois avec les séances à venir et passées

Vues pour manager (bénévole):

Calendrier des bénévoles (pour la projection et/ou la caisse) avec possibilité d'éditer la séance en cliquant dessus.

calendrier

Page Films pour les bénévoles.

films

Page des séances pour les bénévoles.

Séances

Des pages en pdf ici pour les séances passées.

Séances passées pdf

Séances passées.

Séances passées

Édition d'une séance et de ses entrées.

édition séance bénévole

éditions entrées

Utilisateurs.

utilisateurs

Les entrées ( calcul des billets par film, lieu et totaux)

entrées

entrées totaux

entrées film

Vues pour admin :

Les calendriers

Calendrier admin

Séances à venir.

séances à venir

Séances passées.

séances passées

Édition d'une séance.

édition séance

Utilisateurs.

Utilisateurs

Villages (lieux)

Villages

Films.

Films

De la page Films en administrateur, on a tous les boutons pour créer un lieu, un film ou une séance et le bouton 'Importer les nouveaux films' qui va automatiquement importer les nouveaux films à partir d'un fichier .json depuis le site d’Écran Village.

Films et boutons

Édition d'un film.

édition Films

Import de nouvelles séances à partir d'un lien en .json.

Import Films

Interface de Rails_admin

rails_admin

Liste des Films depuis Rails_admin.

films admin

Onglet import depuis Rails-admin (on peut aussi exporter en .cvs, ou .json ou xml).

import

⚠️ **GitHub.com Fallback** ⚠️