Support

Akeeba Ticket System

#23175 Select a User by Support Team, different User Groups

Posted in ‘Akeeba Ticket System for Joomla! 4 & 5’
This is a public ticket

Everybody will be able to see its contents. Do not include usernames, passwords or any other sensitive information.

Environment Information

Joomla! version
n/a
PHP version
n/a
Akeeba Ticket System version
n/a

Latest post by SatIntAKB on Thursday, 27 August 2015 06:29 CDT

SatIntAKB
 Good morning. I have a couple of questions on the (very useful) ability of one of the Support Team to Select a User when creating a ticket on behalf of that user (eg user made phone call to Support).

1. A ticket created this way looks as if created by the User. Is it possible for tickets created by a Support Team member to be identified as "created by Teammember on behalf of User" as opposed to "created by User"?

2. Let us say we have two different User Groups which have two different Support Teams. At the moment, when using Select a User, Support Team 1 can see all Users. Is it possible to filter the Select a User list so that it only shows Users in User Group 1?

The use case could be if we offer support for users of Company 1 and also for users of Company 2 but we don't want the Support Team for Company 1 to accidentally create ticket on Company 2 user.

nicholas
Akeeba Staff
Manager
1. Unfortunately not. It requires very inefficient changes in the database schema and code to add a label of very limited use. It just doesn't make business or architectural sense to implement such a feature.

To give you an idea, it would require not only a new database field in the ticket (e.g. created_on_behalf_by) but also deep changes in every single model, helper class and template to detect if this is non empty and belongs to a valid user. This will have a major impact not only in efficiency (every time we load another user in Joomla! it gets painfully slow) but would also require every client of our software to completely rewrite all their template overrides. Too much hassle, not much gain, let's just not go there. Instead, the support staff can simply type a note "Ticket filed on behalf of the user by XYZ, reference phone conversation such and such", giving much more detailed information than we could ever do by modifying our code.

2. No. This is simply not possible in any efficient manner in Joomla!. It would require us to load each and every user on the site and query their access privileges against every ATS category. On a site with just 100 users that would take slightly over 10 seconds. It goes downhill from there.

The use case could be if we offer support for users of Company 1 and also for users of Company 2 but we don't want the Support Team for Company 1 to accidentally create ticket on Company 2 user.


They shouldn't be able to do that anyway, on a properly configured system. Company 2's users don't have Create privileges on the categories managed by Company 1. That's what access controls (ACLs – the privileges you define in Joomla! itself) are for.

Nicholas K. Dionysopoulos

Lead Developer and Director

πŸ‡¬πŸ‡·Greek: native πŸ‡¬πŸ‡§English: excellent πŸ‡«πŸ‡·French: basic β€’ πŸ• My time zone is Europe / Athens
Please keep in mind my timezone and cultural differences when reading my replies. Thank you!

SatIntAKB
OK, thank you. I understand. I hope.

1. You are right that we can brief the Support Staff as you say but people are only human and sometimes they will forget. So I was looking for automatic way. Possibly by looking at who is actually logged in at the time and comparing with the Selected User. If the same, don't do anything, if not the same then add logged-in user as text in the ticket. But anyhow, I appreciate it's not current function so no problem.

2. If we get the Create Privileges correct, it will be possible to prevent Company 2 Support from Creating a ticket on Company 1 User - I think that's what you're saying? But it is not possible to filter the Select a User list that they see? So they can see all Users, but only create for their specific group?

Thanks for your clarifications - it is as helpful to know what a system is not intended to do as it is to find out what it can do.

nicholas
Akeeba Staff
Manager
1. OK

2. Yes, that's the setup I was talking about. No, the user list cannot be filtered.

That's a Joomla! limitation. You can't limit users by those who have a specific privilege allowed to them. This is due to the way privileges work in Joomla!. In order to determine a user's privileges Joomla! has to look, for each and every group the user belongs to, the same privilege in the category, its parent categories, the component options and –if it's a system (core) privileges– the global privileges you set up in Global Configuration. It has to do that recursively, for every group, because of a. inherited privileges; b. explicit deny always trumps allow; and c. Super User privilege trumps all other privileges (it becomes forced Allow). This is exactly where is the problem I described before: we'd have to query the privileges for every user. This takes about 100 msec per user. At 1000 users your site is unresponsive. At 75,000 users your CPU usage goes up so far and so fast that you may have to actually reboot the server. Don't ask me how I found out...

Nicholas K. Dionysopoulos

Lead Developer and Director

πŸ‡¬πŸ‡·Greek: native πŸ‡¬πŸ‡§English: excellent πŸ‡«πŸ‡·French: basic β€’ πŸ• My time zone is Europe / Athens
Please keep in mind my timezone and cultural differences when reading my replies. Thank you!

SatIntAKB
OK thanks, that's very clear and understandable. It wasn't the privileges we wanted to filter the Select a User list by, rather it was "only show the users who are a member of the same group as the currently logged in support staff". However, if this does not exist, it does not exist, no problem. At least it avoids me having to raise a ticket that says "Help, my site is so unresponsive, I needed to reboot the server, can you give any advice" :).
Many thanks

Support Information

Working hours: We are open Monday to Friday, 9am to 7pm Cyprus timezone (EET / EEST). Support is provided by the same developers writing the software, all of which live in Europe. You can still file tickets outside of our working hours, but we cannot respond to them until we're back at the office.

Support policy: We would like to kindly inform you that when using our support you have already agreed to the Support Policy which is part of our Terms of Service. Thank you for your understanding and for helping us help you!