Beispiel #1
0
        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));
        }
Beispiel #2
0
        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));
            }
        }
Beispiel #3
0
        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));
        }
Beispiel #5
0
        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"));
        }