115 int plen = strlen(path);
122 if (!aeP)
return Access(caps, Entity, path, oper);
126 std::string username;
127 auto got_token = Entity->
eaAPI->
Get(
"request.name", username);
128 if (got_token && !username.empty())
129 {eInfo.
name = username.c_str();
132 else if (Entity->
name)
134 isuser = (*eInfo.
name != 0);
153 while(aeP->
Next(aSeq, eInfo))
155 {xlP->
caps->
Privs(caps, path, plen, phash);
157 return Access(caps, Entity, path, oper);
167 if (!hostRefX && hostRefY) eInfo.
host =
Resolve(Entity);
171 if (Atab.Z_List) Atab.Z_List->Privs(caps, path, plen, phash);
175 if (Atab.D_List && (cp = Atab.D_List->Find(eInfo.
host)))
176 cp->
Privs(caps, path, plen, phash);
180 if (Atab.H_Hash && (cp = Atab.H_Hash->Find(eInfo.
host)))
181 cp->
Privs(caps, path, plen, phash);
185 if (Atab.N_Hash && *eInfo.
host !=
'?' &&
188 while((gname = (
char *)glp->
Next()))
189 if ((cp = Atab.N_Hash->Find((
const char *)gname)))
190 cp->
Privs(caps, path, plen, phash);
196 if (isuser && Atab.X_List)
197 Atab.X_List->Privs(caps, path, plen, phash, eInfo.
name);
201 if (isuser && Atab.U_Hash && (cp = Atab.U_Hash->Find(eInfo.
name)))
202 cp->
Privs(caps, path, plen, phash);
207 const char *vorgPrev = 0, *rolePrev = 0;
210 while(aeP->
Next(aSeq, eInfo))
214 if (Atab.G_Hash && eInfo.
grup && (cp = Atab.G_Hash->Find(eInfo.
grup)))
215 cp->
Privs(caps, path, plen, phash);
219 if (Atab.O_Hash && eInfo.
vorg && eInfo.
vorg != vorgPrev)
220 {vorgPrev = eInfo.
vorg;
221 if ((cp = Atab.O_Hash->Find(eInfo.
vorg)))
222 cp->
Privs(caps, path, plen, phash);
227 if (Atab.R_Hash && eInfo.
role && eInfo.
role != rolePrev)
228 {rolePrev = eInfo.
role;
229 if ((cp = Atab.R_Hash->Find(eInfo.
role)))
230 cp->
Privs(caps, path, plen, phash);
238 ylP->
caps->
Privs(caps, path, plen, phash);
249 return Access(caps, Entity, path, oper);