Example #1
0
        private void DoLogin(Account account)
        {
            Guid token = Guid.NewGuid();

            AccountAccessRecord previousRecord = account.AccountAccessRecords.FirstOrDefault(r => r.Source == Request.UserHostAddress);

            if (previousRecord != null)
            {
                DataContext.AccountAccessRecords.DeleteOnSubmit(previousRecord);
                DataContext.SubmitChanges();
            }

            AccountAccessRecord record = new AccountAccessRecord()
            {
                ActiveDate = DateTime.Now, Account = account, Source = Request.UserHostAddress, Token = token
            };

            DataContext.AccountAccessRecords.InsertOnSubmit(record);
            DataContext.SubmitChanges();

            HttpCookie at = new HttpCookie("AToken", token.ToString());

            at.Expires = DateTime.Now.AddHours(12);
            Response.SetCookie(at);

            HttpCookie vt = new HttpCookie("VToken", "");

            vt.Expires = DateTime.Now.AddDays(-1d);
            Response.SetCookie(vt);
        }
        public IHttpActionResult TrySignIn(LoginDataModel dataModel)
        {
            try
            {
                Account account = DataContext.Accounts.FirstOrDefault(
                    ac => ac.Login == dataModel.Login && ac.Hash == dataModel.Password.MD5());

                if (account == null)
                {
                    return(Ok(new AuthModel()
                    {
                        Message = "Login or password incorrect"
                    }));
                }

                Guid token = Guid.NewGuid();


                string adr = "";
                if (Request.Properties.ContainsKey("MS_HttpContext"))
                {
                    adr = ((HttpContextWrapper)Request.Properties["MS_HttpContext"]).Request.UserHostAddress;
                }

                AccountAccessRecord previousRecord = account.AccountAccessRecords.FirstOrDefault(r => r.Source == adr);
                if (previousRecord != null)
                {
                    DataContext.AccountAccessRecords.DeleteOnSubmit(previousRecord);
                    DataContext.SubmitChanges();
                }

                AccountAccessRecord record = new AccountAccessRecord()
                {
                    ActiveDate = DateTime.Now,
                    Account    = account,
                    Source     = adr,
                    Token      = token
                };
                DataContext.AccountAccessRecords.InsertOnSubmit(record);
                DataContext.SubmitChanges();

                return(Ok(new AuthModel()
                {
                    IsAdmin = account.IsAdmin,
                    Name = account.Login,
                    Token = token.ToString(),
                    IsVisitor = false
                }));
            }
            catch (Exception e)
            {
                return(InternalServerError(e));
            }
        }
Example #3
0
        public ActionResult SignOut()
        {
            AccountAccessRecord previousRecord = CurrentUser?.AccountAccessRecords.FirstOrDefault(r => r.Source == Request.UserHostAddress);

            if (previousRecord != null)
            {
                DataContext.AccountAccessRecords.DeleteOnSubmit(previousRecord);
                DataContext.SubmitChanges();

                HttpCookie at = new HttpCookie("AToken", "");
                at.Expires = DateTime.Now.AddDays(-1d);
                Response.SetCookie(at);
            }
            return(RedirectToAction("Index", "Home"));
        }
        public IHttpActionResult SignOut()
        {
            if (CurrentUser == null)
            {
                return(Unauthorized());
            }
            string adr = "";

            if (Request.Properties.ContainsKey("MS_HttpContext"))
            {
                adr = ((HttpContextWrapper)Request.Properties["MS_HttpContext"]).Request.UserHostAddress;
            }

            AccountAccessRecord previousRecord = CurrentUser?.AccountAccessRecords.FirstOrDefault(r => r.Source == adr);

            if (previousRecord != null)
            {
                DataContext.AccountAccessRecords.DeleteOnSubmit(previousRecord);
                DataContext.SubmitChanges();
            }

            return(Ok());
        }