Fossil SCM
Having the 'setup' or 'admin' permission should imply having the 'delete' and 'private' permissions as well (i.e. since they can change their own permissions anyhow).
Commit
b241130222d2ae78f34e359ece709e8448317084
Parent
f8820eff4e0807e…
1 file changed
+11
-10
+11
-10
| --- src/login.c | ||
| +++ src/login.c | ||
| @@ -1075,29 +1075,30 @@ | ||
| 1075 | 1075 | if(NULL==zCap){ |
| 1076 | 1076 | return; |
| 1077 | 1077 | } |
| 1078 | 1078 | for(i=0; zCap[i]; i++){ |
| 1079 | 1079 | switch( zCap[i] ){ |
| 1080 | - case 's': p->Setup = 1; /* Fall thru into Admin */ | |
| 1080 | + case 's': p->Setup = 1; /* Fall thru into Admin */ | |
| 1081 | 1081 | case 'a': p->Admin = p->RdTkt = p->WrTkt = p->Zip = |
| 1082 | - p->RdWiki = p->WrWiki = p->NewWiki = | |
| 1083 | - p->ApndWiki = p->Hyperlink = p->Clone = | |
| 1084 | - p->NewTkt = p->Password = p->RdAddr = | |
| 1085 | - p->TktFmt = p->Attach = p->ApndTkt = | |
| 1086 | - p->ModWiki = p->ModTkt = 1; | |
| 1087 | - /* Fall thru into Read/Write */ | |
| 1088 | - case 'i': p->Read = p->Write = 1; break; | |
| 1082 | + p->RdWiki = p->WrWiki = p->NewWiki = | |
| 1083 | + p->ApndWiki = p->Hyperlink = p->Clone = | |
| 1084 | + p->NewTkt = p->Password = p->RdAddr = | |
| 1085 | + p->TktFmt = p->Attach = p->ApndTkt = | |
| 1086 | + p->ModWiki = p->ModTkt = p->Delete = | |
| 1087 | + p->Private = 1; | |
| 1088 | + /* Fall thru into Read/Write */ | |
| 1089 | + case 'i': p->Read = p->Write = 1; break; | |
| 1089 | 1090 | case 'o': p->Read = 1; break; |
| 1090 | 1091 | case 'z': p->Zip = 1; break; |
| 1091 | 1092 | |
| 1092 | 1093 | case 'd': p->Delete = 1; break; |
| 1093 | 1094 | case 'h': p->Hyperlink = 1; break; |
| 1094 | 1095 | case 'g': p->Clone = 1; break; |
| 1095 | 1096 | case 'p': p->Password = 1; break; |
| 1096 | 1097 | |
| 1097 | 1098 | case 'j': p->RdWiki = 1; break; |
| 1098 | - case 'k': p->WrWiki = p->RdWiki = p->ApndWiki =1; break; | |
| 1099 | + case 'k': p->WrWiki = p->RdWiki = p->ApndWiki =1; break; | |
| 1099 | 1100 | case 'm': p->ApndWiki = 1; break; |
| 1100 | 1101 | case 'f': p->NewWiki = 1; break; |
| 1101 | 1102 | case 'l': p->ModWiki = 1; break; |
| 1102 | 1103 | |
| 1103 | 1104 | case 'e': p->RdAddr = 1; break; |
| @@ -1181,11 +1182,11 @@ | ||
| 1181 | 1182 | /* case 'v': DEVELOPER */ |
| 1182 | 1183 | case 'w': rc = p->WrTkt; break; |
| 1183 | 1184 | case 'x': rc = p->Private; break; |
| 1184 | 1185 | /* case 'y': */ |
| 1185 | 1186 | case 'z': rc = p->Zip; break; |
| 1186 | - default: rc = 0; break; | |
| 1187 | + default: rc = 0; break; | |
| 1187 | 1188 | } |
| 1188 | 1189 | } |
| 1189 | 1190 | return rc; |
| 1190 | 1191 | } |
| 1191 | 1192 | |
| 1192 | 1193 |
| --- src/login.c | |
| +++ src/login.c | |
| @@ -1075,29 +1075,30 @@ | |
| 1075 | if(NULL==zCap){ |
| 1076 | return; |
| 1077 | } |
| 1078 | for(i=0; zCap[i]; i++){ |
| 1079 | switch( zCap[i] ){ |
| 1080 | case 's': p->Setup = 1; /* Fall thru into Admin */ |
| 1081 | case 'a': p->Admin = p->RdTkt = p->WrTkt = p->Zip = |
| 1082 | p->RdWiki = p->WrWiki = p->NewWiki = |
| 1083 | p->ApndWiki = p->Hyperlink = p->Clone = |
| 1084 | p->NewTkt = p->Password = p->RdAddr = |
| 1085 | p->TktFmt = p->Attach = p->ApndTkt = |
| 1086 | p->ModWiki = p->ModTkt = 1; |
| 1087 | /* Fall thru into Read/Write */ |
| 1088 | case 'i': p->Read = p->Write = 1; break; |
| 1089 | case 'o': p->Read = 1; break; |
| 1090 | case 'z': p->Zip = 1; break; |
| 1091 | |
| 1092 | case 'd': p->Delete = 1; break; |
| 1093 | case 'h': p->Hyperlink = 1; break; |
| 1094 | case 'g': p->Clone = 1; break; |
| 1095 | case 'p': p->Password = 1; break; |
| 1096 | |
| 1097 | case 'j': p->RdWiki = 1; break; |
| 1098 | case 'k': p->WrWiki = p->RdWiki = p->ApndWiki =1; break; |
| 1099 | case 'm': p->ApndWiki = 1; break; |
| 1100 | case 'f': p->NewWiki = 1; break; |
| 1101 | case 'l': p->ModWiki = 1; break; |
| 1102 | |
| 1103 | case 'e': p->RdAddr = 1; break; |
| @@ -1181,11 +1182,11 @@ | |
| 1181 | /* case 'v': DEVELOPER */ |
| 1182 | case 'w': rc = p->WrTkt; break; |
| 1183 | case 'x': rc = p->Private; break; |
| 1184 | /* case 'y': */ |
| 1185 | case 'z': rc = p->Zip; break; |
| 1186 | default: rc = 0; break; |
| 1187 | } |
| 1188 | } |
| 1189 | return rc; |
| 1190 | } |
| 1191 | |
| 1192 |
| --- src/login.c | |
| +++ src/login.c | |
| @@ -1075,29 +1075,30 @@ | |
| 1075 | if(NULL==zCap){ |
| 1076 | return; |
| 1077 | } |
| 1078 | for(i=0; zCap[i]; i++){ |
| 1079 | switch( zCap[i] ){ |
| 1080 | case 's': p->Setup = 1; /* Fall thru into Admin */ |
| 1081 | case 'a': p->Admin = p->RdTkt = p->WrTkt = p->Zip = |
| 1082 | p->RdWiki = p->WrWiki = p->NewWiki = |
| 1083 | p->ApndWiki = p->Hyperlink = p->Clone = |
| 1084 | p->NewTkt = p->Password = p->RdAddr = |
| 1085 | p->TktFmt = p->Attach = p->ApndTkt = |
| 1086 | p->ModWiki = p->ModTkt = p->Delete = |
| 1087 | p->Private = 1; |
| 1088 | /* Fall thru into Read/Write */ |
| 1089 | case 'i': p->Read = p->Write = 1; break; |
| 1090 | case 'o': p->Read = 1; break; |
| 1091 | case 'z': p->Zip = 1; break; |
| 1092 | |
| 1093 | case 'd': p->Delete = 1; break; |
| 1094 | case 'h': p->Hyperlink = 1; break; |
| 1095 | case 'g': p->Clone = 1; break; |
| 1096 | case 'p': p->Password = 1; break; |
| 1097 | |
| 1098 | case 'j': p->RdWiki = 1; break; |
| 1099 | case 'k': p->WrWiki = p->RdWiki = p->ApndWiki =1; break; |
| 1100 | case 'm': p->ApndWiki = 1; break; |
| 1101 | case 'f': p->NewWiki = 1; break; |
| 1102 | case 'l': p->ModWiki = 1; break; |
| 1103 | |
| 1104 | case 'e': p->RdAddr = 1; break; |
| @@ -1181,11 +1182,11 @@ | |
| 1182 | /* case 'v': DEVELOPER */ |
| 1183 | case 'w': rc = p->WrTkt; break; |
| 1184 | case 'x': rc = p->Private; break; |
| 1185 | /* case 'y': */ |
| 1186 | case 'z': rc = p->Zip; break; |
| 1187 | default: rc = 0; break; |
| 1188 | } |
| 1189 | } |
| 1190 | return rc; |
| 1191 | } |
| 1192 | |
| 1193 |