コード例 #1
0
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new User {
                    UserName = model.Email, Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, Purchased = 3
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                    return(RedirectToAction("GetCurrentUser", "User"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
コード例 #2
0
        public OldHouseUser GetTestFackUser(string nickName, string userName, string password)
        {
            var user = MyUserManager.FindByNameAsync(userName).Result;

            if (user != null)
            {
                return(user);
            }

            user = new OldHouseUser {
                NickName     = nickName,
                UserName     = userName,
                PasswordHash = password
            };
            //todo put all oldhouse user roles in consts
            //todo use a fake user iu data base later
            user.Roles.Add("User");
            //it has no profile yet
            //todo may return a fake profile in data base
            var profile = CreateAFakeProfile();

            user.Profiles.Add(OldHouseUserProfile.PROFILENBAME, profile.Id);
            MyUserManager.CreateAsync(user).Wait();
            ProfileService.SaveOne(profile);
            return(user);
        }
コード例 #3
0
        /// <summary>
        /// just the create user method in the jtext103Identity, but with profile added
        //
        /// </summary>
        /// <param name="user">the oldhouse user</param>
        /// <param name="profileNames">you can indecate a list of new profile name</param>
        /// <returns></returns>
        public async Task <IdentityResult> CreateUserWithProfile(OldHouseUser user, HashSet <string> profileNames)
        {
            //default user role
            user.Roles.Add("User");
            var avatarName = "defaultAvatar_boy_";

            if (user.sex == "female")
            {
                avatarName = "defaultAvatar_girl_";
            }
            var rnd = new Random();

            avatarName += rnd.Next(1, 6).ToString() + ".jpg";
            user.Avatar = avatarName;

            var result = await MyUserManager.CreateAsync(user);

            //only when the user is added then can we add profiels
            if (result.IsSuccessful)
            {
                //done add userId in profile
                user.Profiles = CreateNewProfile(profileNames, user.Id);
                await MyUserManager.UpdateAsync(user);
            }
            return(result);
        }
コード例 #4
0
        public async Task <ActionResult> Store(string username, string password)
        {
            var account = new Account()
            {
                UserName  = username,
                Email     = username,
                FirstName = "Xuan Hung",
                LastName  = "Dao",
                Avatar    = "avatar",
                Birthday  = DateTime.Now,
                CreatedAt = DateTime.Now
            };
            IdentityResult result = await _userManager.CreateAsync(account, password);

            if (result.Succeeded)
            {
                _userManager.AddToRole(account.Id, "User");

                // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771
                // Send an email with this link
                string code = await _userManager.GenerateEmailConfirmationTokenAsync(account.Id);

                await _userManager.SendEmailAsync(account.Id, "Hello world! Please confirm your account", "<b>Please confirm your account</b> by clicking <a href=\"http://google.com.vn\">here</a>");

                return(RedirectToAction("Index", "Home"));
            }

            return(View("Register"));
        }
コード例 #5
0
        public async Task <TokenAuthorizeModel> RegisterExternalAsync(MyUserManager userManager, RegisterExternalViewModel viewModel)
        {
            var identity           = viewModel.ToEntity();
            var authenticationType = Enum.Parse <ExternalAuthenticationType>(viewModel.Provider, true);

            _externalAuthenticationFactory.Create(authenticationType).GetUserDetails(identity, viewModel.ProviderIdToken);

            identity.UserName = identity.Email;

            //If user exist in the system
            var user = await userManager.FindByNameAsync(identity.UserName);

            if (user != null)
            {
                return(await user.AuthorizeAsync(userManager, _extensionSettings.appSettings));
            }

            //if user is not exist in the system
            IdentityResult result = await userManager.CreateAsync(identity);

            if (result.Succeeded)
            {
                await updateOtherInfoForIdentity(userManager, identity);

                return(await identity.AuthorizeAsync(userManager, _extensionSettings.appSettings));
            }

            throw new FoodCourtException(ErrorMessage.USER_CREATE_FAIL);
        }
コード例 #6
0
        public async Task <TokenAuthorizeModel> RegisterAsync(MyUserManager userManager, RegisterViewModel viewModel)
        {
            //save
            var identity = viewModel.ToEntity();

            identity.PasswordHash = userManager.PasswordHasher.HashPassword(identity, viewModel.Password);
            IdentityResult result = await userManager.CreateAsync(identity);

            if (result.Succeeded)
            {
                await updateOtherInfoForIdentity(userManager, identity);

                return(await identity.AuthorizeAsync(userManager, _extensionSettings.appSettings));
            }
            throw new FoodCourtException(ErrorMessage.USER_CREATE_FAIL);
        }
コード例 #7
0
        public MyUser AddUser(MyUser user, string password, ref IdentityResult result)
        {
            user.LockoutEnabled = false;
            var order = uM.CreateAsync(user, password);

            order.Wait();

            result = order.Result;
            if (result.Succeeded)
            {
                return(user);
            }
            else
            {
                return(null);
            }
        }
コード例 #8
0
        public async Task <ActionResult> Register(RegisterInputModel model, string SelectedRole)
        {
            if (ModelState.IsValid)
            {
#if DEBUG
                Debug.WriteLine("Model is valid");
#endif
                var user = new t_User();
                user.UserName           = model.UserName;
                user.FIO                = model.FIO;
                user.Position           = model.Position;
                user.SetPasswordEnabled = model.SetPasswordEnabled;

                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
#if DEBUG
                    Debug.WriteLine("resulult is secceeded");
#endif
                    if (SelectedRole != null)
                    {
                        var result2 = await _userManager.AddToRoleAsync(user.Id, SelectedRole);

                        if (result2.Succeeded)
                        {
#if DEBUG
                            Debug.WriteLine("Roles is added");
#endif
                            return(RedirectToAction("List"));
                        }
                    }
                }/*
                  * var result = await _userManager.RegisterUserAsync(model, SelectedRole);
                  * if (result.Succeeded)
                  * {
                  #if DEBUG
                  * Debug.WriteLine("User is added!");
                  #endif
                  * return RedirectToAction("List");
                  * }*/
            }
            model.userRoles = _userManager.GetListUserRoles();
            return(View(model));
        }
コード例 #9
0
        public async Task <IHttpActionResult> Register([FromBody] RegisterBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var user = new AppUser
            {
                UserName = model.UserName,
                Email    = model.Email
            };
            //create user
            var createUserResult = await _userManager.CreateAsync(user, model.Password);

            if (!createUserResult.Succeeded)
            {
                return(GetErrorResult(createUserResult));
            }
            return(Content(HttpStatusCode.Created, user));
        }
コード例 #10
0
        public async Task <IdentityResult> Register(MyUser user, string password)
        {
            var result = await _userManager.CreateAsync(user, password);

            return(result);
        }
コード例 #11
0
        public async Task <IActionResult> SignInCompleteAsync()
        {
            string returnUrl = "/";
            //returnUrl = returnUrl ?? "/";
            var info = await SignInManager.GetExternalLoginInfoAsync();

            if (info == null)
            {
                // El login no es válido o no se ha completado
                return(BadRequest());
            }

            //var userid = info.Principal.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier);
            //var name = info.Principal.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Name);

            //var identityAtDb = await UserManager.FindByLoginAsync(info.LoginProvider, info.ProviderKey);
            //if (identityAtDb == null)
            //{
            //    identityAtDb = await UserManager.FindByEmailAsync(email);
            //    if(identityAtDb == null)
            //    {
            //        identityAtDb = new MyUser();
            //        identityAtDb.Email = email;
            //    }
            //}
            //var userAtIdentity = await UserManager.FindByEmailAsync


            var result = await SignInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent : false, bypassTwoFactor : true);

            if (result.Succeeded)
            {
                return(Ok());
            }
            if (result.IsLockedOut)
            {
                return(Forbid());
            }
            else
            {
                // La idea es: si el usuario no tiene una cuenta creada y enlazada con el proveedor (hubiera pasado por result.Succeeded)
                // exijimos (si aplica) que se cree una cuenta.
                // Podemos coger los Claims que nos provee el servicio externo.
                var email = info.Principal.Claims.FirstOrDefault(c => c.Type == ClaimTypes.Email)?.Value;
                if (string.IsNullOrWhiteSpace(email))
                {
                    return(SignOut());
                }

                var identityUser = new MyUser();
                await UserStore.SetUserNameAsync(identityUser, email, System.Threading.CancellationToken.None);

                await EmailStore.SetEmailAsync(identityUser, email, System.Threading.CancellationToken.None);

                var createResult = await UserManager.CreateAsync(identityUser);

                if (createResult.Succeeded)
                {
                    await SignInManager.SignInAsync(identityUser, isPersistent : false);

                    return(Redirect("/"));
                }
                else
                {
                    foreach (var error in createResult.Errors)
                    {
                        ModelState.AddModelError(error.Code, error.Description);
                    }
                    return(BadRequest(ModelState));
                }
            }
        }