public async Task <UserWithToken> GetUserByShindenIdAsync(ulong id) { using (var db = new Database.UserContext(_config)) { var user = await db.GetCachedFullUserByShindenIdAsync(id); if (user == null) { await "User not found!".ToResponse(404).ExecuteResultAsync(ControllerContext); return(null); } TokenData tokenData = null; var currUser = ControllerContext.HttpContext.User; if (currUser.HasClaim(x => x.Type == ClaimTypes.Webpage)) { tokenData = UserTokenBuilder.BuildUserToken(_config, user); } return(new UserWithToken() { Expire = tokenData?.Expire, Token = tokenData?.Token, User = user, }); } }
public async Task <UserWithToken> GetUserByShindenIdSimpleAsync(ulong id) { using (var db = new Database.UserContext(_config)) { var user = db.Users.Where(x => x.Shinden == id).Include(x => x.GameDeck).AsNoTracking().FirstOrDefault(); if (user == null) { await "User not found!".ToResponse(404).ExecuteResultAsync(ControllerContext); return(null); } TokenData tokenData = null; var currUser = ControllerContext.HttpContext.User; if (currUser.HasClaim(x => x.Type == ClaimTypes.Webpage)) { tokenData = UserTokenBuilder.BuildUserToken(_config, user); } return(new UserWithToken() { Expire = tokenData?.Expire, Token = tokenData?.Token, User = user, }); } }
public async Task <IAuthentificationResult> LogIn(ICredentialHolder credentials) { if (credentials == null) { return new BLAuthentificationResult { IsSucceeded = false, Errors = new[] { "The credentials parameter was null" } } } ; DALUserAccount dalUserAccount = await _userManager.FindByEmailAsync(credentials.Email); if (dalUserAccount == null) { return new BLAuthentificationResult { IsSucceeded = false, Errors = new[] { "No user exists with this email and password" } } } ; List <string> errorMessages = new List <string>(); GetEmailConfirmedMessages(dalUserAccount, errorMessages); GetIsAdmittedMessages(dalUserAccount, errorMessages); if (errorMessages.Count > 0) { return new BLAuthentificationResult { IsSucceeded = false, Errors = errorMessages } } ; SignInResult result = await _signInManager.PasswordSignInAsync( credentials.Email, credentials.Password, isPersistent : credentials.RememberMe, lockoutOnFailure : true); if (result.Succeeded == false) { HandleNegativeSignInResult(result, dalUserAccount, errorMessages); return(new BLAuthentificationResult { IsSucceeded = false, Errors = errorMessages }); } try { var authResult = new BLAuthentificationResult { IsSucceeded = true, UserToken = await UserTokenBuilder.BuildToken(dalUserAccount, _userManager, _dbConfigurations.IssuerSigningKey) }; return(authResult); } catch { throw; } }
public async Task <UserWithToken> GiveShindenUserAPacksAsync(ulong id, [FromBody] List <Models.CardBoosterPack> boosterPacks) { if (boosterPacks?.Count < 1) { await "Model is Invalid".ToResponse(500).ExecuteResultAsync(ControllerContext); return(null); } var packs = new List <BoosterPack>(); foreach (var pack in boosterPacks) { var rPack = pack.ToRealPack(); if (rPack != null) { packs.Add(rPack); } } if (packs.Count < 1) { await "Data is Invalid".ToResponse(500).ExecuteResultAsync(ControllerContext); return(null); } using (var db = new Database.UserContext(_config)) { var user = await db.GetCachedFullUserByShindenIdAsync(id); if (user == null) { await "User not found!".ToResponse(404).ExecuteResultAsync(ControllerContext); return(null); } var discordId = user.Id; var exe = new Executable($"api-packet u{discordId}", new Task(() => { using (var dbs = new Database.UserContext(_config)) { var botUser = dbs.GetUserOrCreateAsync(discordId).Result; foreach (var pack in packs) { botUser.GameDeck.BoosterPacks.Add(pack); } dbs.SaveChanges(); QueryCacheManager.ExpireTag(new string[] { $"user-{botUser.Id}", "users" }); } })); await _executor.TryAdd(exe, TimeSpan.FromSeconds(1)); TokenData tokenData = null; var currUser = ControllerContext.HttpContext.User; if (currUser.HasClaim(x => x.Type == ClaimTypes.Webpage)) { tokenData = UserTokenBuilder.BuildUserToken(_config, user); } return(new UserWithToken() { Expire = tokenData?.Expire, Token = tokenData?.Token, User = user, }); } }