コード例 #1
0
ファイル: AccountController.cs プロジェクト: keshava/ODR
        public async Task <ActionResult> Register(RegisterViewModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email, CreateDate = DateTime.Now, FirstName = model.FirstName, LastName = model.LastName
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    UserManager.AddToRole(user.Id, "User");
                    if (!String.IsNullOrWhiteSpace(Request.QueryString.Get("i")))
                    {
                        BLLUsers.AutoConfirmUser(user.Id);
                        var invit    = Guid.Parse(Request.QueryString.Get("i"));
                        var invitObj = BLLInvitations.GetInvitation(invit);
                        BLLConflicts.AddUserInConflictFromInvitation(user.Email, invit, user.Id);
                        await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                        OpenFireConnector.Connector connector = new OpenFireConnector.Connector("http://openfire-444e60hk.cloudapp.net:9090/", "admin", "SF211084agantio");
                        connector.CreateUser(new OpenFireConnector.user()
                        {
                            password = user.Email, username = user.FirstName.Replace(" ", ".").ToLower() + "." + user.LastName.Replace(" ", ".").ToLower(), email = user.Email
                        });

                        return(RedirectToAction("Identification", "Conflict", new { conflictId = invitObj.IdConflict, idUser = user.Id }));
                    }
                    else
                    {
                        BLLUsers.AutoConfirmUser(user.Id);
                        await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                        if (!String.IsNullOrWhiteSpace(returnUrl))
                        {
                            return(Redirect(returnUrl));
                        }
                        else
                        {
                            return(RedirectToAction("Index", "Home"));
                        }

                        // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                        // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                        // Guid guid = Guid.NewGuid();
                        // FastArbitreEmails.ConfirmAccount(model.Email, model.FirstName + " " + model.LastName, callbackUrl, Request.UrlReferrer.DnsSafeHost + Url.Action("Index", "Email", new { id = guid.ToString() }), guid);
                        //// await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                        // return View("ShouldConfirmEmail");
                    }

                    // Send an email with this link
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form

            return(View(model));
        }
コード例 #2
0
ファイル: AccountController.cs プロジェクト: keshava/ODR
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            // find user by username first
            var user = UserManager.FindByEmail(model.Email);

            if (user == null)
            {
                ModelState.AddModelError("", "Nom d'utilisateur ou mot de passe erroné, veuillez ressayer.");
                return(View(model));
            }

            if (await UserManager.IsLockedOutAsync(user.Id))
            {
                ModelState.AddModelError("", string.Format("Quelqu'un a tenté de se connecter à votre compte sans succès. Afin d'empêcher les personnes malveillantes de trouver votre mot de passe en testant un maximum de combinaison (technique dite 'bruteforce'), votre compte est maintenant bloqué pour {0} minutes.", ConfigurationManager.AppSettings["DefaultAccountLockoutTimeSpan"].ToString()));
                return(View(model));
            }

            // 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.Email, model.Password, model.RememberMe, shouldLockout : true);

            switch (result)
            {
            case SignInStatus.Success:
                if (returnUrl != null)
                {
                    if ((returnUrl.Contains("userId") || returnUrl.Contains("?i=")))
                    {
                        returnUrl = returnUrl.Replace("userId", user.Id);
                        var invitation = HttpUtility.ParseQueryString(returnUrl)[0];
                        BLLConflicts.AddUserInConflictFromInvitation(user.Email, Guid.Parse(invitation), user.Id);
                    }
                    return(Redirect(returnUrl));
                }
                return(RedirectToAction("Profil"));

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

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

            case SignInStatus.Failure:
            default:
                ModelState.AddModelError("", "Nom d'utilisateur ou mot de passe erroné, veuillez ressayer.");
                return(View(model));
            }
        }