All dashboard tabs *do* have application-level privileges already. At least
in 1.9.x, patientDashboardForm.jsp has:

<openmrs:hasPrivilege privilege="Patient Dashboard - View Overview Section">
<openmrs:hasPrivilege privilege="Patient Dashboard - View Regimen Section">
<openmrs:hasPrivilege privilege="Patient Dashboard - View Visits Section">
<openmrs:hasPrivilege privilege="Patient Dashboard - View Encounters
Section">
<openmrs:hasPrivilege privilege="Patient Dashboard - View Demographics
Section">
<openmrs:hasPrivilege privilege="Patient Dashboard - View Graphs Section">
<openmrs:hasPrivilege privilege="Form Entry">


However looking at patientOverview.jsp I see we refer to the underlying
API-level privileges:

<openmrs:hasPrivilege privilege="View Patient Programs">
<openmrs:hasPrivilege privilege="View Relationships">
<openmrs:hasPrivilege privilege="View Allergies">
<openmrs:hasPrivilege privilege="View Problems">


Seems like we should write a ticket to:

   1. introduce new privileges like "Patient Overview - View Programs
   Section", etc
   2. use those in all dashboard portlets rather than the API counterparts
   3. do a liquibase changeset so that every role that has "View Patient
   Programs" also gets "Patient Overview - View Programs Section", etc. (That
   way nobody loses the ability to see something they currently see.)

Dave, would that help?

Daniel, want to do this?

-Darius

On Wed, May 9, 2012 at 2:33 PM, Dave Thomas <[email protected]> wrote:

> Burke, sorry for not being clear before.  I think what you said in #1 is
> pretty much what i'm asking for.
>
> The terminology can be worked out (to use your example 'Access' could
> imply API-level privileges, and 'View' could imply app-level privileges),
> but the important thing to me would be to not have 'Access Patient Data'
> sometimes be applied at the API level and sometimes applied at the app
> level.  With 'Access Patient Data' used at both the API and app layers, if
> I restrict 'Access Patient Data' for a user, it is incredibly difficult to
> tell what i've actually restricted.  This is when pieces of the
> application, other than the one I was trying to restrict, start throwing
> errors unexpectedly (per mark's example).
>
> Part two of this argument (and maybe this is a different discussion) would
> be that once there was a clear distinction between api and app level
> privileges, the app level privileges could start to reflect actual UI
> components a little more.  If each portlet on the patient dashboard had its
> own privilege for example, like 'view regimen tab', the UI would be a LOT
> more easy to customise in a meaningful way using privileges and roles.
>
> d
>
>
> On Wed, May 9, 2012 at 1:43 PM, Burke Mamlin <[email protected]>wrote:
>
>> Mark,
>>
>> This is an interesting point.  Your example helps me understand Dave's
>> point and suggests that we should distinguish between "Access Patient Data"
>> and "View Patient Data" – i.e., the use of "View" in the privilege term
>> describing API-level access to data per our conventions implies that
>> getting data at the API level also means that the user should be able to
>> view it within the application, which is not always the case.  In your
>> example (a person being able to view aggregate patient data without viewing
>> individual patient records), we have two choices:
>>
>>    1. Grant the user "Access Patient Data" as the API-level privilege,
>>    meaning that they would be permitted to execute API calls that return
>>    patient information, but would not imply that the application should let
>>    them view the data directly.
>>
>>    2. Allow the methods that need to access patient data to proxy
>>    privileges for the user.
>>
>> The first seems like the better option to me.  Proxying privileges seems
>> like a hacky way to override privileges that are there for a reason.  The
>> first option will take some effort (maybe more than the upcoming sprint can
>> muster), but seems like a better long-term solution.  Maybe we can come up
>> with a way to start heading that direction.
>>
>> -Burke
>>
>>
>> On Wed, May 9, 2012 at 3:55 PM, Mark Goodrich <[email protected]> wrote:
>>
>>> +1 for this.  We’ve run into issues with this a lot.  For instance, say
>>> you have a user who should not be able to view patients, but should have
>>> access to a report of aggregate patient data that calls getPatients()
>>> behind the scenes to perform the necessary calculations.  If you take away
>>> the “view patient” privilege from the user, they’ll get a stack trace when
>>> they attempt to execute the report.****
>>>
>>> ** **
>>>
>>> This issue has been prevalent enough for us that we basically are unable
>>> to use privileges and roles for access control … ****
>>>
>>> ** **
>>>
>>> Mark****
>>>
>>> ** **
>>>
>>> ** **
>>>
>>> *From:* [email protected] [mailto:[email protected]] *On Behalf Of *Dave
>>> Thomas
>>> *Sent:* Wednesday, May 09, 2012 2:51 PM
>>> *To:* [email protected]
>>> *Subject:* Re: [OPENMRS-DEV] Roles and Privileges Sprint****
>>>
>>> ** **
>>>
>>> If i can weigh in on a discussion of roles and privileges briefly, I've
>>> found (and maybe things are improved in versions greater than 1.6.x) that
>>> we've run into trouble when a privilege is used both at the api and web
>>> layer.  This happens when we want to hide something in the UI that is
>>> wrapped in a <privilege/> tag, but then when we remove that privilege for a
>>> user, it turns out that the same privilege was wrapped around a couple of
>>> API methods, causing unexpected and hard-to-track-down UI problems across
>>> all of openmrs.
>>>
>>> If there's a dedicated pass at roles+privileges, has there been any
>>> thought to separating api privileges from ui privileges?  I kind of feel
>>> like this is low-hanging fruit.  This wouldn't even need re-architecting,
>>> maybe just privilege naming conventions?
>>>
>>> Or is the general sense that this type of problem has disappeared in
>>> newer versions?
>>>
>>> d****
>>>
>>> On Wed, May 9, 2012 at 10:29 AM, Burke Mamlin <[email protected]> wrote:
>>> ****
>>>
>>> (bringing this conversation about preparing for the Roles & Privileges
>>> sprint onto the dev list)****
>>>
>>> ** **
>>>
>>> Reviewing the notes <http://notes.openmrs.org/2012-roadmap> on Roles &
>>> Permissions section from Jembi & PIH, it looks like there are some
>>> fundamental improvements requested:****
>>>
>>>    - Ship OpenMRS with pre-defined roles****
>>>    - Better documentation on managing roles (avoiding pitfalls)****
>>>    - More informative handling of privilege exceptions (make it easier
>>>    to understand where/which privileges are missing)****
>>>    - Data-level permissions (restricting access to specific data based
>>>    on privileges)****
>>>
>>> We've had prior conversations about improving roles/privileges:****
>>>
>>>    - Avoiding the common pitfall of conflating organizational roles
>>>    (job title) with application roles (authorization within OpenMRS); they 
>>> may
>>>    align early on in simple systems, but exceptions are common over time or 
>>> as
>>>    a a system grows.****
>>>    - Creating privilege groups vs. programmatically defined roles –
>>>    e.g., a web page wants to limit access to those who have a set of
>>>    privileges.****
>>>    - Introducing location-based privileges****
>>>
>>> There seem to be some potential short-term wins that could be done in
>>> the sprint:****
>>>
>>>    - Improve our documentation to better introduce people to roles &
>>>    privileges and cover the common pitfalls.****
>>>    - Improve privilege error messages in core and/or create a module
>>>    that makes it easier to troubleshoot privilege errors (e.g., log all
>>>    privilege checks during an operation and present the unique list of
>>>    privileges and/or roles that would cover the operation, allowing someone 
>>> to
>>>    step through a workflow as superuser and then see the list of privileges
>>>    required to complete the workflow).****
>>>    - Come up with some basic application roles that can be pre-defined
>>>    within OpenMRS (ship with the application)****
>>>    - Design (and, if possible, implement) an approach for privilege
>>>    groups or system roles (i.e., uneditable sets of privileges that
>>>    applications can program against)****
>>>
>>> Data-level privileges (limiting access to data based on privileges)
>>> would be a terrific addition, but I'm afraid it will take more design that
>>> we can muster between now & the beginning of this sprint.  Maybe we could
>>> come up with some small but useful first attempts at solving this problem
>>> (e.g., a module requiring permissions to access certain observations … or a
>>> module that limits access to specific patients based on permissions).***
>>> *
>>>
>>> ** **
>>>
>>> Cheers,****
>>>
>>> ** **
>>>
>>> -Burke****
>>>
>>> ** **
>>>
>>> On Wed, May 9, 2012 at 9:49 AM, Burke Mamlin <[email protected]> wrote:*
>>> ***
>>>
>>> Looking back at notes from AMPATH, the only reference to anything close
>>> to roles & privileges I found was the desire for the Data Entry Statistics
>>> Module to have a basic view privilege that allows a data assistant to see
>>> only his/her own statistics.****
>>>
>>> ** **
>>>
>>> -Burke****
>>>
>>> ** **
>>>
>>> On Wed, May 9, 2012 at 9:44 AM, Ben Wolfe <[email protected]> wrote:****
>>>
>>> Dawn found this link for me:
>>> http://notes.openmrs.org/2012-roadmap
>>>
>>> Is has the (mostly raw) notes from the calls we had with
>>> Jembi/PIH/AMPATH.
>>>
>>> Daniel, can you tease out the topics from that and the other text below
>>> in the next 4 hours?
>>>
>>> Ben****
>>>
>>> ** **
>>> ------------------------------
>>>
>>> Click here to 
>>> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
>>> OpenMRS Developers' mailing list
>>> ****
>>>
>>> ** **
>>> ------------------------------
>>>
>>> Click here to 
>>> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
>>> OpenMRS Developers' mailing list
>>> ****
>>> ------------------------------
>>> Click here to 
>>> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
>>> OpenMRS Developers' mailing list
>>>
>>
>> ------------------------------
>> Click here to 
>> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
>> OpenMRS Developers' mailing list
>>
>
> ------------------------------
> Click here to 
> unsubscribe<[email protected]?body=SIGNOFF%20openmrs-devel-l>from 
> OpenMRS Developers' mailing list
>

_________________________________________

To unsubscribe from OpenMRS Developers' mailing list, send an e-mail to 
[email protected] with "SIGNOFF openmrs-devel-l" in the  body (not 
the subject) of your e-mail.

[mailto:[email protected]?body=SIGNOFF%20openmrs-devel-l]

Reply via email to