Modify

Opened 6 years ago

Last modified 12 months ago

#5191 assigned defect

[Patch] New users do not appear in members-list

Reported by: anonymous Owned by: rjollos
Priority: normal Component: SvnAuthzAdminPlugin
Severity: normal Keywords: user list
Cc: dmcr@… Trac Release: 0.11

Description

After adding a few new users with the accountmanagers plugin these new users do not appear in the list of groupsmembers in the svnauthz plugin.

Attachments (0)

Change History (13)

comment:1 Changed 6 years ago by anonymous

  • Component changed from SELECT A HACK to SvnAuthzAdminPlugin
  • Owner changed from anonymous to kisg

comment:2 Changed 6 years ago by anonymous

  • Type changed from enhancement to defect

comment:3 Changed 6 years ago by chrisheller

The list of users that is shown comes from the list of users (or groups) in Trac that have been assigned at least one permission.

So, if you want to give one person specific access in svn authz, they need to have at least one permission explicitly granted to them in the Trac permissions; they can't have their only permissions come from Trac group membership.

comment:4 Changed 5 years ago by ThurnerRupert

added comment to #4832. see also here for the implementation to get all users.

comment:5 Changed 5 years ago by jay.w.xie@…

This's my solution to get all users from session, this will list all users that exists in the session table in the trac database.

I don't think this is the best way, but it works for me.

  • svnauthz/admin_ui.py

     
    310310
    311311    def _get_all_users(self):
    312312      """
    313       Fetches all users/groups from PermissionSystem
     313      Fetches all users/groups from session
    314314      """
    315       perm = PermissionSystem(self.env)
     315      db = self.env.get_db_cnx()
     316      cursor = db.cursor()
     317      cursor.execute("SELECT sid "
     318                     "FROM session "
     319                     "WHERE authenticated=1")
    316320      users = ["*"]
    317       data = perm.get_all_permissions()
    318       if not data:
    319         return [] # we abort here
     321      for username in cursor:
     322        users.append(username)
     323      return users
    320324
    321       for (subject, action) in data:
    322         if subject not in users and subject not in ["anonymous", "authenticated"]:
    323           users.append(subject)
    324       return users
    325 
    326325    def _get_candidate_subjects(self, not_in_list = []):
    327326        candidates = []
    328327        users = [user for user in self._get_all_users()

comment:6 follow-up: Changed 5 years ago by till

my proposal:

  • svnauthz/

    old new  
    310310
    311311    def _get_all_users(self):
    312312      """
    313       Fetches all users/groups from PermissionSystem
     313      Fetches all users/groups
    314314      """
    315       perm = PermissionSystem(self.env)
    316315      users = ["*"]
    317       data = perm.get_all_permissions()
     316      data = self.env.get_known_users()
    318317      if not data:
    319318        return [] # we abort here
    320319
    321       for (subject, action) in data:
     320      for (subject, name, email) in data:
    322321        if subject not in users and subject not in ["anonymous", "authenticated"]:
    323322          users.append(subject)
    324323      return users 

comment:7 in reply to: ↑ 6 Changed 5 years ago by TimN

I'm using the patch from comment 6. Works just fine and is really useful e.g. when using the account manager plugin and most users do not have special permissions. I'd vote for applying it (and please make a release to ease packaging).

comment:8 Changed 5 years ago by anonymous

I'm using the patch in comment 7 posted by till and it works perfectly. Makes more sense as well as there's no guarantee that a user will be in the session table.

comment:9 follow-up: Changed 4 years ago by rjollos

Patch in comment:6 looks correct. Any objects by kisg that I commit this patch?

comment:10 Changed 4 years ago by rjollos

  • Summary changed from New users do not appear in members-list to [Patch] New users do not appear in members-list

comment:11 in reply to: ↑ 9 ; follow-up: Changed 3 years ago by hasienda

  • Keywords user list added

Replying to rjollos:

Patch in comment:6 looks correct. Any objects by kisg that I commit this patch?

Anonymous in comment:8 seems reminds me of the temporary nature of the session table (autopurge after some time of inactivity), while self.env.get_known_users() will take information from session_attribute table, that is guaranteed to last. Just my 2 ct.

comment:12 in reply to: ↑ 11 Changed 3 years ago by rjollos

  • Cc dmcr@… added; anonymous removed

Replying to hasienda:

Anonymous in comment:8 seems reminds me of the temporary nature of the session table (autopurge after some time of inactivity), while self.env.get_known_users() will take information from session_attribute table, that is guaranteed to last. Just my 2 ct.

I went ahead and pushed the changes from Dennis in #8165 since kisg seems to have disappeared. I'm thinking we have enough positive feedback to apply this patch as well.

comment:13 Changed 12 months ago by rjollos

  • Owner changed from kisg to rjollos
  • Status changed from new to assigned

Add Comment

Modify Ticket

Action
as assigned The owner will remain rjollos.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.