コード例 #1
0
        public async Task SendVerificationEmail(IdentityUserViewModel model)
        {
            try
            {
                var user = await _userManager.FindByEmailAsync(model.Email);

                if (user == null)
                {
                    throw new Exception($"Unable to load user");
                }

                var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                var callbackUrl = UrlHelperExtensions.EmailConfirmationLink(user.Id, code);

                var email = user.Email;
                await _emailSender.SendEmailAsync(email, "Confirm email", callbackUrl);

                _logger.LogInformation($"Verification email sent to {user.Id}.");
            }
            catch (Exception ex)
            {
                _logger.LogError(ex);
            }
        }
コード例 #2
0
        public async Task <IActionResult> Register([FromBody] RegisterBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            model.Password = "******";
            var user = new IdentityUserViewModel()
            {
                UserName    = model.Email,
                Email       = model.Email,
                DateOfBirth = model.DateOfBirth,
                Gender      = model.Gender,
                CityId      = model.CityId,
                CountryId   = model.CountryId,
                AboutInfo   = model.AboutInfo
            };

            IdentityResult result = await userManager.CreateAsync(user, model.Password);

            if (result.Succeeded)
            {
                result = await userManager.AddToRoleAsync(user, UserRoles.User.ToString());
            }

            IActionResult errorResult = GetErrorResult(result);

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

            return(Ok(result.Succeeded));
        }
コード例 #3
0
        public async Task <IHttpActionResult> Register(RegisterBindingModel bindingModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = new IdentityUserViewModel {
                UserName = bindingModel.Email, Email = bindingModel.Email, NewsLetterIds = bindingModel.NewsLetterIds
            };

            try
            {
                IdentityResult result = await UserManager.CreateAsync(user, bindingModel.Password);

                IHttpActionResult errorResult = GetErrorResult(result);

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

                return(Ok(new { message = AppMessages.SIGNUP_SUCCESS_REDIRECT_TIMEOUT_MESSAGE }));
            } catch (Exception ex)
            {
                if (CheckUniqueKeyException(ex))
                {
                    return(BadRequest(AppMessages.SIGNUP_ERROR_DUPLICATE_KEY_MESSAGE));
                }

                return(InternalServerError(ex));
            }
        }
コード例 #4
0
        public async Task <IOperationResult> UpdateIdentityUser(string userId, IdentityUserViewModel model)
        {
            try
            {
                var user = await _userManager.FindByIdAsync(userId);

                if (user == null)
                {
                    throw new Exception($"Unable to load user");
                }

                if (model.Email != user.Email)
                {
                    await _userManager.SetEmailAsync(user, model.Email);
                }

                if (model.PhoneNumber != user.PhoneNumber)
                {
                    await _userManager.SetPhoneNumberAsync(user, model.PhoneNumber);
                }

                return(OperationResult.Success);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex);

                return(OperationResult.Failed(ex.Message));
            }
        }
コード例 #5
0
        public static IdentityUserViewModel ToIdentityUserViewModel(this ApplicationUser model)
        {
            var i = new IdentityUserViewModel();
            i.Assign(model);

            return i;
        }
コード例 #6
0
        public async Task <IHttpActionResult> Register(RegisterBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var user = new IdentityUserViewModel()
            {
                UserName = "******" + DateTime.Now.Ticks,
                Email    = model.Email,
                AgeRange = model.AgeRange,
                Gender   = model.Gender
            };

            IdentityResult result = await UserManager.CreateAsync(user, model.Password);

            IHttpActionResult errorResult = GetErrorResult(result);

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

            return(Ok(new { message = AppMessages.SIGNUP_SUCCESS_REDIRECT_TIMEOUT_MESSAGE }));
        }
        public BaseResponseResult SendUserRegistrationMail(IdentityUserViewModel viewModel)
        {
            BaseResponseResult result = new BaseResponseResult();

            try
            {
                if (string.IsNullOrEmpty(viewModel.Email) == false)
                {
                    var maiTemplate = new UserRegistrationMail(viewModel.Email, viewModel.InputPassword);
                    //var queueViewModel = maiTemplate.CreateEmailQueueViewModel(viewModel.Email);
                    //var entity = queueViewModel.ToEntityModel<EmailQueue, EmailQueueViewModel>();
                    //result.IsSucceed = AddEmailIntoQueue(entity);

                    if (result.IsSucceed)
                    {
                        result.Message = AppMessages.Email_Succeed_Message;
                    }
                    else
                    {
                        result.Message = AppMessages.Email_Failed_Message;
                    }
                }
            }
            catch (ApplicationException)
            {
                result.IsSucceed = false;
                result.Message   = AppMessages.Email_Failed_Message;
            }

            return(result);
        }
コード例 #8
0
        public static async Task<IdentityUserViewModel> ToIdentityUserViewModelAsync(this ApplicationUser model, IdentityManagerService service)
        {
            var i = new IdentityUserViewModel();
            i.Assign(model);

            if (service != null) i.Role = await service.GetMainRoleForUserAsync(model.Id) ?? "";

            return i;
        }
コード例 #9
0
        public async Task <IHttpActionResult> RegisterExternal(RegisterExternalBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            model.UserName = "******" + DateTime.Now.Ticks;
            var verifiedAccessToken = await VerifyExternalAccessToken(model.Provider, model.ExternalAccessToken);

            if (verifiedAccessToken == null)
            {
                return(BadRequest("Invalid Provider or External Access Token"));
            }

            var user = await UserManager.FindAsync(new UserLoginInfo(model.Provider, verifiedAccessToken.user_id));

            bool hasRegistered = user != null;

            if (hasRegistered)
            {
                return(BadRequest("External user is already registered"));
            }

            user = new IdentityUserViewModel()
            {
                UserName = model.UserName, AgeRange = model.AgeRange, Email = model.Email
            };

            IdentityResult result = await UserManager.CreateAsync(user);

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            var info = new ExternalLoginInfo()
            {
                DefaultUserName = model.UserName,
                Login           = new UserLoginInfo(model.Provider, verifiedAccessToken.user_id)
            };

            result = await UserManager.AddLoginAsync(user.Id, info.Login);

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            //generate access token response
            var accessTokenResponse = GenerateLocalAccessTokenResponse(model.UserName);

            return(Ok(accessTokenResponse));
        }
コード例 #10
0
        public IActionResult Create()
        {
            var userModel = new IdentityUserViewModel()
            {
                profile = new ProfileViewModel()
            };

            var model = new IdentityUserEditViewModel {
                user = userModel, roleOptions = GetRoleOptions()
            };

            model.roles = new string[] { "Staff" };

            return(Ok(model));
        }
コード例 #11
0
        public async Task <IActionResult> Edit(string id, [Bind("Id,UserName,Role")] IdentityUserViewModel userVM)
        {
            if (string.IsNullOrWhiteSpace(id))
            {
                return(NotFound());
            }

            var newRole = userVM.Role;

            var role = await _roleManager.FindByNameAsync(newRole);

            if (role != null)
            {
                var user = await _userManager.FindByIdAsync(id);

                // wez role usera tego powyzej
                var prevRoleList = await _userManager.GetRolesAsync(user);

                string prevRole = prevRoleList.FirstOrDefault();
                // usun z tego usera stara role
                await _userManager.RemoveFromRoleAsync(user, prevRole);

                // mozwile ze tu bedzie trzeba savechanges ale jak nie to gituwa
                // przypisz nowa role do usera
                await _userManager.AddToRolesAsync(user, new List <string> {
                    role.Name
                });

                //update i elo
                //_context.Update(user);
                await _context.SaveChangesAsync();
            }

            //if (await _userManager.IsInRoleAsync(user, "Customer"))
            //{
            //    await _userManager.RemoveFromRoleAsync(user, "Customer");

            //    //await _context.saveChangesAsync()

            //    await _userManager.AddToRoleAsync(user, newRole);
            //}

            //_context.Update(user);
            //await _context.SaveChangesAsync();
            return(RedirectToAction(nameof(Index)));

            //return View(user);
        }
コード例 #12
0
        //  GET /Me
        public async Task <IdentityUserViewModel> Me()
        {
            var u = await ApplicationUserManager.FindByIdAsync(this.TokenId.Id);

            var displayUser = new IdentityUserViewModel()
            {
                Id          = u.Id,
                UserName    = u.UserName,
                Email       = u.Email,
                LocalNumber = u.LocalNumber,
                Role        = u.Role,
                FirstName   = u.FirstName,
                LastName    = u.LastName,
                PhoneNumber = u.PhoneNumber
            };

            return(displayUser);
        }
コード例 #13
0
        public async Task <IActionResult> Index()
        {
            var allUsers   = _userManager.Users.ToList();
            var allUsersVM = new List <IdentityUserViewModel>();

            foreach (var user in allUsers)
            {
                var roles = await _userManager.GetRolesAsync(user);

                var role = roles.FirstOrDefault();
                IdentityUserViewModel identityUserVM = new IdentityUserViewModel
                {
                    Id       = user.Id,
                    UserName = Ceasar.Decipher(user.UserName, CipherKey),
                    Role     = role
                };
                allUsersVM.Add(identityUserVM);
            }
            return(View(allUsersVM));
        }
コード例 #14
0
ファイル: ViewService.cs プロジェクト: prolearner18/Tcust
        public static IdentityUserViewModel MapIdentityUserViewModel(ApplicationUser user, IEnumerable <IdentityRole> roles = null)
        {
            var model = new IdentityUserViewModel
            {
                id    = user.Id,
                name  = user.UserName,
                email = user.Email,
            };

            if (user.Profile != null)
            {
                model.profile = MapProfileViewModel(user.Profile);
            }

            if (!roles.IsNullOrEmpty())
            {
                model.roles = String.Join(",", roles.Select(r => r.Name));
            }


            return(model);
        }
        //[AllowAnonymous]
        //[ValidateAntiForgeryToken]
        public async Task <IActionResult> LoginConfirmation([FromBody] ExternalLoginViewModel registration)
        {
            if (ModelState.IsValid)
            {
                // Get the information about the user from the external login provider
                //var info = await signInManager.GetExternalLoginInfoAsync();
                //if (info == null)
                //{
                //    throw new ApplicationException("Error loading external login information during confirmation.");
                //}
                var info = new UserLoginInfo(registration.LoginProvider, registration.ProviderKey, registration.ProviderDisplayName);
                var user = new IdentityUserViewModel {
                    UserName = AppMethods.GenerateUserName(registration.Email), Email = registration.Email
                };
                var response = await userManager.CreateAsync(user);

                if (response.Succeeded)
                {
                    response = await userManager.AddToRoleAsync(user, UserRoles.User.ToString());
                }
                if (response.Succeeded)
                {
                    user.RoleName = UserRoles.User.ToString();
                    response      = await userManager.AddLoginAsync(user, info);

                    if (response.Succeeded)
                    {
                        await signInManager.SignInAsync(user, isPersistent : false);

                        //_logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);
                        return(Ok(new { UserInfo = user, IsAuth = true }));
                    }
                }
                AddErrors(response);
            }

            return(BadRequest(ModelState));
        }
コード例 #16
0
        public ActionResult Edit(string id, IdentityUserViewModel editModel)
        {
            if (!ModelState.IsValid)
            {
                return(View(editModel));
            }

            var contact = _aspNetUsersService.GetUser(id);

            if (contact != null)
            {
                var isAuthorized = true;
                if (!isAuthorized)
                {
                    return(View());
                }

                contact = _mapper.Map <AspNetUser>(editModel);
                bool result = _aspNetUsersService.UpdateUser(contact);
            }

            return(RedirectToAction("Index"));
        }
コード例 #17
0
 public UserPdfResultsMail(IdentityUserViewModel user)
 {
     this.Subject  = AppMessages.Email_PdfResult_Subject;
     this.Email    = user.Email;
     this.UserName = user.UserName;
 }
コード例 #18
0
 public UserPdfResultsMail(IdentityUserViewModel user)
 {
     this.Subject  = AppMessages.EMAIL_PDFRESULT_SUBJECT;
     this.Email    = user.Email;
     this.UserName = user.UserName;
 }
コード例 #19
0
 public async Task<ActionResult> UpdateApplicationUser(IdentityUserViewModel model)
 {
     if (ModelState.IsValid)
     {
         await IdentityManagerService.InsertOrUpdate(model, UserManager);
         //await CenterRepository.UpdateEmployeeCenter(model.Id, model.CenterId,new Guid(User.Identity.GetUserId()));
       
         return RedirectToAction("AccountMangement");
     }
     ViewBag.Roles = new SelectList(await IdentityManagerService.GetRolesAsync());
     return View("~/Views/Account/EditApplicationUser", model);
 }
コード例 #20
0
        //  PUT api/Users/{uuid:guid}
        public async Task <IHttpActionResult> Put(string uuid, IdentityUserViewModel userVM)
        {
            if (userVM == null)
            {
                return(BadRequest("Argument Null"));
            }

            if (string.IsNullOrEmpty(userVM.LocalNumber))
            {
                return(BadRequest("Local Number cannot be empty!!!"));
            }
            if (userVM.UserName.Length < 4)
            {
                return(BadRequest("Username cannot be less than 4 characters"));
            }

            var user = await ApplicationUserManager.FindByIdAsync(uuid);

            if (user == null)
            {
                return(NotFound());
            }
            if (!(this.TokenId.IsSuperAdmin || this.TokenId.IsLocalAdmin))
            {
                return(BadRequest("Insufficient permissions to update. Must be Super Admin or Local Admin."));
            }
            if (this.TokenId.IsLocalAdmin && user.LocalNumber != this.TokenId.LocalNumber)
            {
                return(BadRequest("Local Admin can only update the users belonging to the local !!"));
            }

            user.Email       = userVM.Email;
            user.FirstName   = userVM.FirstName;
            user.LastName    = userVM.LastName;
            user.UserName    = userVM.UserName;
            user.PhoneNumber = userVM.PhoneNumber;
            user.LocalNumber = userVM.LocalNumber;
            user.Role        = userVM.Role;

            //Sanitize the role
            string role = "Basic_User";

            switch (user.Role.ToLower())
            {
            case "super_admin":
                role = "Super_Admin";
                break;

            case "local_admin":
                role = "Local_Admin";
                break;

            case "cashier":
                role = "Cashier";
                break;

            default: role = "Basic_User"; break;
            }
            user.Role = role;

            IdentityResult result = await ApplicationUserManager.UpdateAsync(user);

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            return(Ok());
        }
コード例 #21
0
        public async Task<bool> InsertOrUpdate(IdentityUserViewModel model, ApplicationUserManager userManager)
        {

            var user = await userManager.FindByIdAsync(model.Id);

            if (user == null)
            {
                user = new ApplicationUser();
                user.Assign(model);


                var result = await userManager.CreateAsync(user, "1234567");
                if (!result.Succeeded) return false;
                model.Id = user.Id;
            }
            else
            {
                user.Email = model.Email;
                user.UserName = model.UserName;
                user.DUI = model.DUI;
                user.PhoneNumber = model.PHONE_2;
                user.ADDRESS = model.ADDRESS;
                user.Category = model.Category;
                user.FirstName = model.FirstName;
                user.LastName = model.LastName;
                user.DUI = model.DUI;
                user.PHONE_2 = model.PHONE_2;
                user.ProfilePicture = model.ProfilePicture;
                user.CenterId = model.CenterId;
                //user.Address = model.Address;
                //user.FirstName = model.FirstName;
                //user.LastName = model.LastName;
                //user.DocumentNum = model.DocumentNum;
                //user.ProfilePicture = model.ProfilePicture;
                await userManager.UpdateAsync(user);
            }

            if (model.ForceChangePassword)
            {
                var tok = await userManager.GeneratePasswordResetTokenAsync(model.Id);

                var result = await userManager.ResetPasswordAsync(model.Id, tok, model.Password);

                if (!result.Succeeded) return false;
            }
            var roles = await userManager.GetRolesAsync(model.Id);

            if (!roles.Any() && !string.IsNullOrEmpty(model.Role))
            {
                var res = await userManager.AddToRoleAsync(model.Id, model.Role);
            }

            if (roles.All(r => r != model.Role) && roles.Any())
            {
                var result = await userManager.AddToRoleAsync(model.Id, model.Role);
            }
            roles.Where(r => r != model.Role).ToList().ForEach(role => userManager.RemoveFromRole(model.Id, role));

            if (model.CenterId != 0)
            {

                var claim = await Context.UserClaims.FirstOrDefaultAsync(c => c.UserId == user.Id && c.ClaimType == "CenterId");

                var claims = await userManager.GetClaimsAsync(user.Id);
                if (claim != null)
                {
                    claim.ClaimValue = model.CenterId.Value.ToString();
                    await Context.SaveChangesAsync();
                }
                else
                {
                    await userManager.AddClaimAsync(model.Id, new System.Security.Claims.Claim("CenterId", model.CenterId.ToString()));
                }
            }


            return true;
        }
コード例 #22
0
        public void TestMethod1()
        {
            //
            // TODO: Add test logic here
            //
            var context = AccessContext.Create();
            var identityContext = AccessContext.Create();
            var service = new IdentityManagerService(identityContext);

            var users = service.GetUsersAsync(new Access.Models.FilterOptionModel()).Result;

            var center = context.Centers.FirstOrDefault();

            var user = users[1];

            user.CenterId = center.Id;

            var userStore = new UserStore<ApplicationUser>(identityContext);
            var manager = new ApplicationUserManager(userStore);

            var model = new IdentityUserViewModel();
            model.Assign(user);
            
             var result = service.InsertOrUpdate(model,manager).Result;

            Assert.IsNotNull(users);
            
        }