On Tuesday, May 9, 2017 at 1:24:55 AM UTC-7, toto200891 wrote:
>
> Thank you for the modification. But I see that, it is affecting the search 
> filters. With the permission ticket_view_reported, one cannot search for 
> his tickets. In other words, if the user have to search for a particular 
> ticket, he could not do it, as the ticket filter doesn't seem to be 
> enabled. 
>
> Regards,
>
> SF
>

Yes, good point. Revoking TICKET_VIEW prevents the search filter from 
displaying. Instead, we could keep TICKET_VIEW for all users, and deny the 
action if the users doesn't possess TICKET_VIEW_REPORTED and the user isn't 
the ticket reporter. I've also considered that the most common case would 
be to allow users with TICKET_ADMIN to view all tickets. Please try the 
following:


# -*- 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 \
                resource is not None and \
                resource.realm == 'ticket' and \
                resource.id is not None and \
                'TICKET_ADMIN' not in perm:
            if 'TICKET_VIEW_REPORTED' in perm:
                try:
                    ticket = Ticket(self.env, resource.id)
                except ResourceNotFound:
                    pass
                else:
                    return ticket['reporter'] == username
            else:
                return False



[End of Message]


-- 
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