Hello,
Trying to help out someone with a different problem I've found the cause for Gemini issues GAL-2075 and GAL-2337. Users unable to download photos even if members of a download role.
As the image controls are being created and the menu created, permissions are checked for each object from a previous call to the modulesettings table. When it's being determined weather to add the download menu option the module is checked to see if downloads are permitted then the user is checked to see if they are SU or admin. The last check is if user is in the download roles.
The download rolls are loaded at module load time and are stored in the modulesettings table as type string (ie ;3;4;7). This string is passed to the if statement for the menu download option and then to PortalSecurity.IsInRoles. The string is split at the semi-colon and passed to PortalSecurity.IsInRoll.
IsInRole checks to see if the string passed in matches the Rolename but it was passed the role ID. (ie passed '3' expected 'downloader'. No match is made and False is passed back to the Gallery module.
You can confirm this by changing the row in modulesettings from the roleID to the RoleName. This of course breaks the configuration control so it needs to be changed back.
I would add a routine that converts the RoleID stored in the DB to Rolename prior to checking the IsInRoles method.
I haven't included any code with this as I found it generally isn't appreciated :) But figured someone on the team might find it helpful in making a fix. If someone wants the code I'll post it or I can give you the line numbers where the calls are made. At any rate there is a duplicate issue in Gemini that could be closed.
Cheers,