Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Scout/Tutorial/3.8/Minicrm/Permissions

< Scout‎ | Tutorial‎ | 3.8‎ | Minicrm
Revision as of 04:51, 24 October 2012 by Asc.bsiag.com (Talk | contribs) (Person Form)

The Scout documentation has been moved to https://eclipsescout.github.io/.

Note.png
Scout Tutorial
This page belongs to the Minicrm Step-by-Step Tutorial. It explains how to work with permissions. You need to have a solid understanding of the previous chapters.


What is this chapter about?

This chapter is about authorization and authentication.

When creating forms and table pages, the wizards have always created Permission classes in the background:

  • CreateCompanyPermission
  • ReadCompanyPermission
  • UpdateCompanyPermission
  • DeleteCompanyPermission (actually, you will have to create this permission yourself if you implement a delete menu)

We want to create an Administration View where Users get assigned Roles. These Roles have have Permissions. When a user logs in, the appropriate Permissions are loaded.

For this to work, users must be authenticated. We'll add a SecurityFilter to handle this.

This chapter assumes that you're pretty proficient at creating tables, forms and services. No more hand-holding. :)

Database

The sample database already contains the following tables:

ROLE       ROLE_PERMISSION  USER_ROLE
---------  ---------------  ---------
ROLE_NR    ROLE_NR          USER_NR
NAME       PERMISSION_NAME  ROLE_NR

The PERSON table has a USERNAME column.

We don't need to make any changes.

Roles

Create a new Lookup Call RoleLookupCall.

The RoleLookupService uses this statement:

    return "" +
        "SELECT  ROLE_NR, " +
        "        NAME " +
        "FROM    ROLE " +
        "WHERE   1=1 " +
        "<key>   AND ROLE_NR = :key </key> " +
        "<text>  AND UPPER(NAME) LIKE UPPER(:text||'%') </text> " +
        "<all> </all> ";

Person Form

Create a Person Form and a Person Process Service to create and edit persons.

Field Name Column Name Type
Name LAST_NAME String
First Name FIRST_NAME
Employer COMPANY_NR SmartField (CompanyLookupCall)
Username USERNAME String
Roles USER_ROLE.ROLE_NR Listview (RoleLookupCall, Grid H 4)

Add a "New Person..." and a "Edit Person..." menu to the PersonTablePage.

Administration View

Create the following outline on the client side:

Administration Outline
 │
 ├─Role Table Page
 │  │
 │  └─Permission Table Page
 │
 └─Permission Table Page

Additional table pages might be useful: which roles use a particular permission? which users have a particular role? These are left as an exercise for the reader.

Back to the top