Ejemplo n.º 1
0
        //POST .../api/Login
        public HttpResponseMessage Post(LoginModel model)
        {
            if (System.Web.Security.Membership.ValidateUser(model.UserName, model.Password))
            {
                IQueryable<UserName> matchingUserNames = db.UserNames.Where<UserName>(a => a.UserName1.Equals(model.UserName));

                if (matchingUserNames.Count() == 0)
                {
                    //This is user's first Web API login; create API record
                    UserName userNameRecord = new UserName() { UserName1 = model.UserName };
                    userNameRecord.UserID = (Guid)System.Web.Security.Membership.FindUsersByName(model.UserName).Cast<System.Web.Security.MembershipUser>().FirstOrDefault().ProviderUserKey;

                    db.UserNames.Add(userNameRecord);
                    db.SaveChanges();
                }

                string userName = db.UserNames.Where<UserName>(a => a.UserName1.Equals(model.UserName)).FirstOrDefault().UserName1;
               
                AuthToken token;
                try
                {
                    token = db.AuthTokens.Where<AuthToken>(t => t.UserName.Equals(userName)).First();
                    //User already has a token -> update token
                    token.Token = Guid.NewGuid().ToString() + ":" + token.AuthTokenID;
                    token.ExpirationDate = DateTime.Now.AddMinutes(10); //Expires in 10 minutes

                    db.Entry(token).State = System.Data.EntityState.Modified;
                    db.SaveChanges();
                }
                catch (InvalidOperationException ioe)
                {
                    //Token does not already exist for the user -> create token
                    token = new AuthToken();
                    token.UserName = userName;

                    token.Token = Guid.NewGuid().ToString();
                    token.ExpirationDate = DateTime.Now.AddMinutes(10); //Expires in 10 minutes

                    token = db.AuthTokens.Add(token);
                    db.SaveChanges();

                    token.Token = token.Token + ":" + token.AuthTokenID;

                    db.Entry(token).State = System.Data.EntityState.Modified;
                    db.SaveChanges();
                }

                var response = Request.CreateResponse<string>(HttpStatusCode.OK, token.Token);

                return response;
            }
            else
                return Request.CreateResponse(HttpStatusCode.Forbidden);
        }
Ejemplo n.º 2
0
        public ActionResult Login(LoginModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {

                if (System.Web.Security.Membership.ValidateUser(model.UserName, model.Password))
                {
                    if (!Roles.IsUserInRole(model.UserName, "User"))
                    {
                        FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
                        if (Url.IsLocalUrl(returnUrl))
                        {
                            return Redirect(returnUrl);
                        }
                        else
                        {
                            return RedirectToAction("Index", "Home");
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("", "This login can only be used with the Pocket Job Coach Mobile App.");
                    }
                }
                else
                {
                    ModelState.AddModelError("", "The user name or password provided is incorrect.");
                }

            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }