Branch: Tag:

2016-12-07

2016-12-07 10:25:35 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added access level ACCESS_GROUP.

This is to simplify detection of access to group-level tags and branches.

Allow ordinary group members to create group tags and branches.

Use symbolic names for all access_level checks.

573:    enum AccessLevel {    ACCESS_NONE = 0,    ACCESS_BASIC = 1, -  ACCESS_FULL = 2, // rebase/delete branch, move/delete tag, etc. +  ACCESS_GROUP = 2, // Create group tags. +  ACCESS_FULL = 3, // rebase/delete branch, move/delete tag, etc.    };       protected mapping(string:AccessLevel) groups = ([
608:    }    if (groups[fields[0]]) continue; // Already a member.    if (has_value(members, user)) { -  groups[fields[0]] = ACCESS_BASIC; +  groups[fields[0]] = ACCESS_GROUP;    continue;    }    groups[fields[0]] = ACCESS_NONE;
658:    }       if (!sizeof(oldtag) && search(ref_name[10..], "/") >= 0) { +  if (access_level >= ACCESS_GROUP) { +  // Group tag and we have permission. +  return 0; +  }    write("Common tags are not allowed to contain /.\n");    return 1;    }
674:    write("Main version branches can not be created remotely.\n");    return 1;    } -  if (access_level < 2 && search(ref_name[11..], "/")>=0) { +  if (access_level < ACCESS_GROUP && search(ref_name[11..], "/")>=0) {    write("Common topic branch names are not allowed to contain /.\n");    return 1;    }    return 0;    } else if (new_sha == "0"*40) {    // Delete old branch -  if (access_level < 2) { +  if (access_level < ACCESS_FULL) {    write("You may not delete branches which do not belong to you.\n");    return 1;    }