Search code examples
extjsextjs4extjs4.1extjs4.2extjs-mvc

Role based views in extjs4 mvc


My application has different views for different roles like (admin or standard user).I don't know how can i implement it with extjs4 MVC. Examples of extjs4 documentation consider that application has only one role like standard user so they create one app.js file that manage application but if application has many roles i don't know how can i implement different views for different users.
One matter is i have two app.js files in the application and after i get user role in the server i load appropriate app.js file to use appropriate views,controllers,models,stores and so on.
Is this matter true?


Solution

  • This is a rather standard question that comes up so many times and the answer is always the same:

    • Access Control belongs to the Server where no user can manipulate it
    • Simply don't provide a View / a model / a controller to a user where he has no access to

    With that in mind it doesn't matter if you have one app or ten.

    And because Access Control is nothing that belongs to the frontend there is no implementation within ExtJS.

    Update -> Hide UI elements

    A ready to go approach would be the use of Ext.direct. This provide the application with a API that can be modified based on custom access of the current user and can then be checked by the frontend.

    HowTo:

    Create the API based on the user session and check on the Clientside like

    if(Booking) {
       if (Booking.Create) {
           // has access
       }
    }
    

    or as one line

    {
        xtype: 'button',
        hidden: !(Booking && Booking.Create)
    }
    

    This is just a simple example how easy this could be done!

    update This Link helped the op