public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View("Login", model));
            }


            if (model.Username == "")
            {
                model.Username = UserManager.FindByEmail(model.Email).UserName;
            }

            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            var result = await SignInManager.PasswordSignInAsync(model.Username, model.Password, model.RememberMe, shouldLockout : false);

            switch (result)
            {
            case SignInStatus.Success:
                OnlineUsersHelper.UpdateOnlineStatus(model.Username);
                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }));

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Invalid login attempt.");
                return(View("Login", model));
            }
        }
示例#2
0
        public async Task <ActionResult> Create(string id)
        {
            if (id == User.Identity.GetUserId())
            {
                return(Content("You can't chat with yourself!"));
            }
            string myUserId   = User.Identity.GetUserId();
            string myUserName = User.Identity.Name;

            if (!_conDb.Conversations.Where(x => x.FromUserId == id).Any(x => x.ToUserId == myUserId))
            {
                // create new conversation
                var newConversationDetail = new ConversationDetail()
                {
                    ConversationId  = Guid.NewGuid(),
                    FromUserId      = id,
                    ToUserId        = myUserId,
                    ToUserName      = myUserName,
                    UnreadMessageNo = 0,
                    Updatetime      = DateTime.Now
                };
                _conDb.Conversations.Add(newConversationDetail);
                await _conDb.SaveChangesAsync();
            }
            if (!_conDb.Conversations.Where(x => x.FromUserId == myUserId).Any(x => x.ToUserId == id))
            {
                // create new conversation
                var newConversationDetail = new ConversationDetail()
                {
                    ConversationId  = Guid.NewGuid(),
                    FromUserId      = myUserId,
                    ToUserId        = id,
                    ToUserName      = UserManager.FindById(id).UserName,
                    UnreadMessageNo = 0,
                    Updatetime      = DateTime.Now
                };
                _conDb.Conversations.Add(newConversationDetail);
                await _conDb.SaveChangesAsync();
            }

            //if target user is online, creating real time connection
            if (OnlineUsersHelper.CheckIfUserOnline(UserManager.FindById(id).UserName) &&
                OnlineUsersHelper.CheckIfUserOnline(UserManager.FindById(myUserId).UserName))
            {
            }

            return(RedirectToAction("Index"));
        }