public void EnsureAccount(AccountData account, PrivilegeConfig usage, int operation, int karma, string message, string ip) { if (account == null) { throw new InvalidOperationException("Account Not Found"); } if (!usage.IsSatisfied(account.PrivilegeLevelNavigation)) { throw new InvalidOperationException("Account Insufficient Privilege"); } if (account.PrivilegeLevel == GlobalConfig.ACCOUNT_BLOCKED_LEVEL) { throw new InvalidOperationException("Account Blacklisted"); } if (account.HasSuspended() && account.SuspendUntil >= _time.UtcNow) { throw new InvalidOperationException("Account Suspended"); } if (!account.PrivilegeLevelNavigation.IgnoreKarma && karma != 0) { var before = account.Karma; var after = account.Karma + karma; if (after < 0 && GlobalConfig.USER_ENABLE_KARMA) { throw new InvalidOperationException("Account Insufficient Karma"); } account.Karma = after; _context.AccountData.Update(account); _context.KarmaLog.Add(new KarmaLog { ReportTime = _time.UtcNow, AccountId = account.AccountId, Reason = operation, Before = before, After = after }); } _context.AccountLog.Add(new AccountLog { ReportTime = _time.UtcNow, AccountId = account.AccountId, Message = operation, Detail = message, IpAddress = ip }); _context.SaveChanges(); }
public static bool IsSatisfied(this PrivilegeConfig requirement, PrivilegeConfig enforcement) { return(((requirement.AccessData & enforcement.AccessData) == requirement.AccessData) && ((requirement.Login & enforcement.Login) == requirement.Login) && ((requirement.IgnoreKarma & enforcement.IgnoreKarma) == requirement.IgnoreKarma) && ((requirement.AccessStatics & enforcement.AccessStatics) == requirement.AccessStatics) && ((requirement.Debug & enforcement.Debug) == requirement.Debug) && ((requirement.BatchRead & enforcement.BatchRead) == requirement.BatchRead) && ((requirement.BatchWrite & enforcement.BatchWrite) == requirement.BatchWrite) && ((requirement.AccountOperation & enforcement.AccountOperation) == requirement.AccountOperation) && ((requirement.ReleaseUpdate & enforcement.ReleaseUpdate) == requirement.ReleaseUpdate) && ((requirement.DeleteRecord & enforcement.DeleteRecord) == requirement.DeleteRecord) && ((requirement.AccountManagement & enforcement.AccountManagement) == requirement.AccountManagement)); }
public AccountController(IHttpContextAccessor accessor, ITimeService time, MilvanethDbContext context, IAuthentication auth, IPowService pow, ISrp6Service srp, IApiKeySignService api, ITokenSignService token, IVerifyMailService mail, IRepository repo) { _accessor = accessor; _time = time; _context = context; _auth = auth; _pow = pow; _srp = srp; _api = api; _token = token; _mail = mail; _repo = repo; _userPrivilege = _context.PrivilegeConfig.Single(x => x.Name == "User"); _changeToken = _context.KeyUsage.Single(x => x.Name == "Password Change Token"); }
public static void Register(HttpConfiguration config) { // Configuration et services API Web // Itinéraires de l'API Web config.MapHttpAttributeRoutes(); UtilisateurConfig.addRoutes(config); PrivilegeConfig.addRoutes(config); PrivilegeUtilisateurConfig.addRoutes(config); CompteConfig.addRoutes(config); TransactionConfig.addRoutes(config); TransactionPeriodiqueConfig.addRoutes(config); TransfertConfig.addRoutes(config); CategorieConfig.addRoutes(config); PorteFeuilleConfig.addRoutes(config); }