public async Task <ResponseModelBase <UserInfoResponseModel> > ValidateServerToken([FromBody] ValidateServerTokenRequestModel model) { if (!ModelState.IsValid) { return(ErrorModel.Of <UserInfoResponseModel>(null, "invalid_request")); } var token = ldb.DBContext.ServerTokens .Include(a => a.Owner) .ThenInclude(a => a.OwnedProducts) .Where(a => a.ServerToken == model.ServerToken).FirstOrDefault(); if (token == null) { return(ErrorModel.Of <UserInfoResponseModel>(null, "token_not_found")); } if (DateTime.Now > token.ExpiryDate) { //Remove it token.Owner.RemoveToken(token); await ldb.Save(); return(ErrorModel.Of <UserInfoResponseModel>(null, "token_expired")); } if (!token.Owner.IsEmailConfirmed) { return(ErrorModel.Of <UserInfoResponseModel>(null, "email_not_confirmed")); } var resp = new UserInfoResponseModel(token.Owner); //Remove it token.Owner.RemoveToken(token); ldb.DBContext.ServerTokens.Remove(token); await ldb.Save(); return(Models.OkModel.Of(resp)); }
public async Task <ResponseModelBase> DoDBCleanup() { try { //Clean up sessions and tokens var oldSessions = ldb.DBContext.Sessions.Include(a => a.Owner).Where(a => DateTime.UtcNow > a.ExpiryDate); var oldTokens = ldb.DBContext.ServerTokens.Include(a => a.Owner).Where(a => DateTime.UtcNow > a.ExpiryDate); int sessCt = 0, tknCt = 0; foreach (var sess in oldSessions) { sessCt++; //remove index from user object sess?.Owner?.With(ldb.DBContext)?.RemoveSession(sess); } await ldb.Save(); foreach (var tkn in oldTokens) { tknCt++; //remove index from user object tkn?.Owner?.With(ldb.DBContext)?.RemoveToken(tkn); } await ldb.Save(); //Remove accounts more than 7 days old that are not verified var oldUsers = ldb.DBContext.Users.Where(a => !a.IsEmailConfirmed) .Where(a => (DateTime.UtcNow - a.EmailConfirmationSent).TotalDays > 7).ToList(); var usrCt = oldUsers.Count(); oldUsers.ForEach(async a => await ldb.DeleteUser(a)); await ldb.Save(); return(Models.OkModel.Of($"{tknCt} tokens removed, {sessCt} sessions removed, {usrCt} users removed")); } catch (Exception e) { return(ErrorModel.Of(e)); } }
public void InserirTest() { LoginDB l = new LoginDB(); l.Login = "******"; l.Senha = "123"; l.Save(); var result = LoginDB.Get(l.ID); Assert.AreEqual("binhara", result.Login); Assert.AreEqual("123", result.Senha); }
public async Task <ResponseModelBase <bool> > RefreshSessionKey([FromBody] AuthenticatedRequestModel model) { if (!ModelState.IsValid) { return(ErrorModel.Of(false, "invalid_request")); } var session = await ldb.GetSessionFromKey(model.SessionKey); if (session == null) { return(ErrorModel.Of(false, "not_logged_in")); //Auth failed } session.ExpiryDate = DateTime.UtcNow + ldb.LoginLength; await Task.Run(() => ldb.DBContext.Sessions.Update(session)); await ldb.Save(); return(Models.OkModel.Of(true)); }
public IActionResult Index([Bind] Login log) { LoginDB db = new LoginDB(); try { if (ModelState.IsValid) { string res = db.Save(log); if (res == "s") { string url = Request.Headers["Referer"].ToString(); string textoInvertido = new string(url.Reverse().ToArray()); int cont = 0; foreach (char c in textoInvertido) { cont++; if (c == '/') { break; } } string media = textoInvertido.Substring(0, cont - 1); string textoInvertidofinal = new string(media.Reverse().ToArray()); return(RedirectToAction(textoInvertidofinal, "Loged", TempData["nome"] = "verificado")); } if (res == "n") { string verificaçao = res; return(RedirectToAction("index", "home", TempData["verificaçao"] = verificaçao)); } } } catch (Exception ex) { TempData["msg"] = ex.Message; } return(RedirectToAction("index", "home")); }