Hi,

With the above plugin, I can restrict the users to view tickets only they 
report or been assigned. But I would like to have a set of users to view 
all the tickets, for that I tried giving the permission TICKET_VIEW, but I 
still see that the users can see only see tickets reported or assigned and 
not all the tickets? Any help is appreciated.

Regards,

SF

On Tuesday, May 9, 2017 at 7:24:12 PM UTC+2, RjOllos wrote:
>
> In another thread (1) we've been discussing various iterations of 
> SupportDeskPolicy (2).
>
> I consider the following to be the most intuitive behavior:
> * Users having TICKET_VIEW can see all tickets
> * Users having TICKET_VIEW_REPORTED (and not having TICKET_VIEW) can only 
> see tickets they report
>
> Previous iterations of the plugin were non-intuitive in having the 
> following behavior:
> * Users with TICKET_VIEW can see all tickets
> * Users with TICKET_VIEW and TICKET_VIEW_REPORTED can only see tickets 
> they report
>
> We also need things like search filters to be present for users with 
> TICKET_VIEW_REPORTED. For that to happen, these "coarse-grained" checks 
> must return true for a user that has TICKET_VIEW_REPORTED and doesn't have 
> TICKET_VIEW:
> 'TICKET_VIEW' in req.perm
> 'TICKET_VIEW' in req.perm('ticket')
>
> Therefore, I propose the following, which seems to work in the limited 
> testing I've done. An unintended, but likely desirable effect of the 
> implementation, a user with TICKET_VIEW and TICKET_VIEW_REPORTED can only 
> see tickets they reported. Effectively, having TICKET_VIEW_REPORTED causes 
> the check for TICKET_VIEW in DefaultPermissionPolicy to be skipped entirely.
>
> # -*- coding: utf-8 -*-
> #
> # Copyright (C) 2017 Edgewall Software
> # All rights reserved.
> #
> # This software is licensed as described in the file COPYING, which
> # you should have received as part of this distribution. The terms
> # are also available at http://trac.edgewall.org/wiki/TracLicense.
> #
> # This software consists of voluntary contributions made by many
> # individuals. For the exact contribution history, see the revision
> # history and logs, available at http://trac.edgewall.org/log/.
>
> from trac.core import *
> from trac.perm import IPermissionPolicy, IPermissionRequestor
> from trac.resource import ResourceNotFound
> from trac.ticket.model import Ticket
>
>
> class SupportDeskPolicy(Component):
>     """Provides a permission for restricting ticket actions to the
>     ticket owner.
>     """
>
>     implements(IPermissionPolicy, IPermissionRequestor)
>
>     # IPermissionRequestor methods
>
>     def get_permission_actions(self):
>         return ['TICKET_VIEW_REPORTED']
>
>     # IPermissionPolicy methods
>
>     def check_permission(self, action, username, resource, perm):
>         if action == 'TICKET_VIEW' and \
>                 'TICKET_ADMIN' not in perm:
>             if 'TICKET_VIEW_REPORTED' in perm:
>                 if resource is None or \
>                         resource.realm == 'ticket' and \
>                         resource.id is None:
>                     return True
>                 elif resource.realm == 'ticket' and \
>                         resource.id is not None:
>                     try:
>                         ticket = Ticket(self.env, resource.id)
>                     except ResourceNotFound:
>                         pass
>                     else:
>                         return ticket['reporter'] == username
>
>
> [End of Code]
>
> - Ryan
>
> (1) https://groups.google.com/forum/#!topic/trac-users/sneow4NJ7lM
> (2) 
> https://trac.edgewall.org/wiki/CookBook/PermissionPolicies#SupportDeskPolicy
>
>
>

-- 
You received this message because you are subscribed to the Google Groups "Trac 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/trac-users.
For more options, visit https://groups.google.com/d/optout.

Reply via email to