Gestione delle autorizzazioni in un'applicazione MVP

2

In un'applicazione Windows Payroll che utilizza MVP pattern (per un client su piccola scala) Sto pianificando la gestione dei permessi dell'utente come segue (basato su autorizzazioni) in quanto la sua implementazione dovrebbe essere meno complicata e semplice.

NOTA : il sistema potrebbe essere utilizzato simultaneamente da pochi utenti (massimo 3) e il database è sul lato server.

Questo è il mio UserModel . Ogni utente ha un elenco di autorizzazioni dati per loro.

class User
{
    string UserID { get; set; }
    string Name { get; set; }
    string NIC {get;set;}
    string Designation { get; set; }
    string PassWord { get; set; }
    List <string> PermissionList = new List<string>();
    bool status { get; set; }
    DateTime EnteredDate { get; set; }
}

Quando l'utente accede al sistema, manterrà l'utente corrente nella memoria.

Ad esempio in BankAccountDetailEntering view Controllo il permesso del controller come segue.

 public partial class BankAccountDetailEntering : Form
    {
        bool AccountEditable {get; set;}

        private void BankAccountDetailEntering_Load(object sender, EventArgs e)
        {
            cmdEditAccount.enabled = false;

            OnLoadForm (sender, e); // Event fires...

            If (AccountEditable )
            {
                cmdEditAccount.enabled=true;
            }
         }
    }

A questo scopo, tutti i relatori pertinenti (come BankAccountDetailPresenter) dovrebbero conoscere UserModel oltre alla percentuale di affari Model che presenta al View .

class BankAccountDetailPresenter
{    
    BankAccountDetailEntering _View;
    BankAccount _Model;
    User _UserModel;
    DataService _DataService;

    BankAccountDetailPresenter( BankAccountDetailEntering view, BankAccount model, User userModel, DataService dataService )
    {
        _View=view;
        _Model = model;
        _UserModel = userModel;
        _DataService = dataService;
        WireUpEvents();
    }

    private void WireUpEvents()
    {
        _View.OnLoadForm += new EventHandler(_View_OnLoadForm);
    }

    private void _View_OnLoadForm(Object sender, EventArgs e)
    {

        foreach(string s in _UserModel.PermissionList) 
        { 
            If( s =="CanEditAccount")
            {
                _View.AccountEditable =true;
                return;
            }
        }
    }

    public Show()
    {
        _View.ShowDialog();
    }
}

Quindi sto gestendo le autorizzazioni utente nel presentatore che scorre attraverso l'elenco. Dovrebbe essere eseguito in Presenter o View ? Qualche altro modo più promettente per farlo?

    
posta CAD 08.06.2014 - 13:50
fonte

0 risposte

Leggi altre domande sui tag