GrantManager getValues off by one

This commit is contained in:
quentin 2024-10-29 19:12:29 -05:00
parent eac9c784fb
commit 048ccd7c4c

View File

@ -7,25 +7,20 @@ namespace API.Services
{
public class GrantManager : IGrantManager
{
private readonly SASGContext _context;
private ILogger<GrantManager> _logger;
private SASGContext _context;
public GrantManager(ILogger<GrantManager> logger, SASGContext context)
{
_logger = logger;
_context = context;
}
private IEnumerable<Grant> getGrant(Expression<Func<Grant, bool>> whereClause)
{
return _context.Set<Grant>().Where(whereClause);
}
public bool hasGrant(ulong permissionId, string grantName)
{
return getGrant(x => x.permissionId == permissionId && x.name.Equals(grantName)).Any();
}
public List<string> getValues(ulong permissionId, string grantName)
{
List<Grant> grants = getGrant(x => x.permissionId == permissionId && x.name.StartsWith(grantName + ".")).ToList();
@ -33,7 +28,7 @@ namespace API.Services
List<string> values = [];
foreach (Grant grant in grants)
{
string value = grant.name.Substring(grantName.Length);
string value = grant.name.Substring(grantName.Length + 1);
if (value.Contains('.'))
// Were not looking at a value and instead another grant
continue;
@ -81,5 +76,10 @@ namespace API.Services
return uLongValues;
}
private IEnumerable<Grant> getGrant(Expression<Func<Grant, bool>> whereClause)
{
return _context.Set<Grant>().Where(whereClause);
}
}
}