2017-10-12 7 views
-2
  1. J'ai 8 boutons, chacun effectue une tâche différente, par exemple modifier, supprimer, créer, etc., et un menu contextuel pour chacune des tâchesActivation/désactivation des boutons via la fonction/méthode (C#)

  2. J'ai une table appelée Modérations dans DB, qui se compose de bools-à-dire groupTitle, CanEdit, CanDelete, CanCreate ..... groupTitle est une chaîne non bool

  3. J'ai une fonction bool canDoIt (tâche, userid) pour vérifier si l'utilisateur connecté (qui aura des groupTitle), peut effectuer ou ne peut pas (retour de la fonction vraie ou fausse pour la tâche prévue, bref)

Supposons, je veux vérifier si un utilisateur connecté peut effectuer la tâche ou pas, vérifiez par canDoit (tâche, userid), et s'il ne peut pas, le bouton sera désactivé sinon ne sera pas .... OnForm_Load Je lance la fonction (ou peut être une autre fois quand j'en ai besoin) et vérifie chaque bouton, ie

btnEdit.Enabled = canDo("canEdit", userID) 
btnDelete.Enabled = canDo("canDelete", userID) 
btnCreate.Enabled = canDo("canCreat", userID) 

cnxMenuEdit.Enabled = canDo("canEdit", userID) 
cnxMenuDelete.Enabled = canDo("canDelete", userID) 
. 
. 
. 
.....and so on and so forth. 

Ma méthode de travail bien et bon, mais j'ai des doutes et des questions ....

Première question, c'est bon d'être ainsi? Deuxième question, est-ce professionnel? Un autre est, cela aura-t-il un effet sur les performances du programme ou de la base de données?

Désolé si même a déjà demandé/posté .....

+3

[CodeReview] (https://codereview.stackexchange.com/). – Sinatr

+0

@Sinatr Je ne suis pas d'accord. Ce code n'est pas complet et, en cas de besoin d'examen, OP remet en question la méthodologie globale, et cela convient à SO. – DonBoitnott

+0

@DonBoitnott, * "est bon?" *, * "Est-ce professionnel?" * Me semble "je ne l'aime pas", qui est "s'il vous plaît codereview quelqu'un". Ils ont leurs règles, la question ne correspond pas à ce que je suis d'accord. – Sinatr

Répondre

0

Vous devez garder votre connecté les droits d'accès de l'utilisateur dans la mémoire. Créez un modèle d'utilisateur qui contiendra la liste des droits d'accès, chargez-le sur un objet statique lorsque l'utilisateur se connecte et vous pourrez vérifier l'accès lorsque vous en aurez besoin.

Quelque chose comme ça

public class UserModel 
{ 
    public List<UserAccessRight> AccessRights {get; set;} 
} 

public class UserAccessRight 
{ 
    public string Name {get; set;} 
} 

public static class SomeAuthHelperClass 
{ 
    public UserModel CurrentUser {get; set;} 

    // some helper methods to retrieve data etc. 

    public static CanDo(string accessRight) 
    { 
     return CurrentUser.AccessRights.Contains(ar => ar.Name.Equals(accessRight); 
    } 
} 
..... 

btnEdit.Enabled = SomeAuthHelperClass.CanDo("EditSomething");