public static VehicleUserViewModel ToViewModel(this VehicleUser entity)
        {
            if (entity == null)
            {
                return(null);
            }

            VehicleUserViewModel model = new VehicleUserViewModel
            {
                Id                          = entity.Id,
                VehicleId                   = entity.VehicleId,
                BulgarianCitizenPin         = entity.BulgarianCitizenPin,
                BulgarianCitizenFirstName   = entity.BulgarianCitizenFirstName,
                BulgarianCitizenMiddleName  = entity.BulgarianCitizenMiddleName,
                BulgarianCitizenLastName    = entity.BulgarianCitizenLastName,
                ForeignCitizenPin           = entity.ForeignCitizenPin,
                ForeignCitizenPn            = entity.ForeignCitizenPn,
                ForeignCitizenNamesCyrillic = entity.ForeignCitizenNamesCyrillic,
                ForeignCitizenNamesLatin    = entity.ForeignCitizenNamesLatin,
                ForeignCitizenNationality   = entity.ForeignCitizenNationality,
                CompanyId                   = entity.CompanyId,
                CompanyName                 = entity.CompanyName,
                CompanyNameLatin            = entity.CompanyNameLatin,
            };

            return(model);
        }
        public static VehicleUser ToEntity(this VehicleUserViewModel model)
        {
            if (model == null)
            {
                return(null);
            }

            VehicleUser entity = new VehicleUser
            {
                Id                          = model.Id,
                VehicleId                   = model.VehicleId,
                BulgarianCitizenPin         = model.BulgarianCitizenPin,
                BulgarianCitizenFirstName   = model.BulgarianCitizenFirstName,
                BulgarianCitizenMiddleName  = model.BulgarianCitizenMiddleName,
                BulgarianCitizenLastName    = model.BulgarianCitizenLastName,
                ForeignCitizenPin           = model.ForeignCitizenPin,
                ForeignCitizenPn            = model.ForeignCitizenPn,
                ForeignCitizenNamesCyrillic = model.ForeignCitizenNamesCyrillic,
                ForeignCitizenNamesLatin    = model.ForeignCitizenNamesLatin,
                ForeignCitizenNationality   = model.ForeignCitizenNationality,
                CompanyId                   = model.CompanyId,
                CompanyName                 = model.CompanyName,
                CompanyNameLatin            = model.CompanyNameLatin,
            };


            return(entity);
        }
Esempio n. 3
0
        public UserViewModel(VehicleUser user)
        {
            Id          = user.Id;
            Name        = user.UserName;
            Email       = user.Email;
            Type        = user.Type;
            GroupId     = user.GroupId;
            TownId      = user.TownId;
            PhoneNumber = user.PhoneNumber;
            StatusCode  = user.Status;
            switch (user.Status)
            {
            case StatusType.OK:
                Status = "正常";
                break;

            case StatusType.Forbidden:
                Status = "停用";
                break;

            case StatusType.Authorizing:
                Status = "等待审核";
                break;
            }
        }
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                ViewData["Id"] = Input.Id;
                return(Page());
            }

            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
            }
            if (Input.Id == null || user.Id == Input.Id)
            {
                var changePasswordResult = await _userManager.ChangePasswordAsync(user, Input.OldPassword, Input.NewPassword);

                if (!changePasswordResult.Succeeded)
                {
                    foreach (var error in changePasswordResult.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }
                    return(Page());
                }

                await _signInManager.SignInAsync(user, isPersistent : false);

                _logger.LogInformation("User changed their password successfully.");
                StatusMessage = "密码已经成功修改";
            }
            else
            {
                UserStore <VehicleUser> store = new UserStore <VehicleUser>(_dbContext);
                VehicleUser             cUser = await store.FindByIdAsync(Input.Id);

                if (cUser != null)
                {
                    if (cUser.TownId == user.TownId && User.IsInRole("TownManager") ||
                        User.IsInRole("Admins") || User.IsInRole("GlobalVisitor"))
                    {
                        String newPassword       = Input.NewPassword;
                        String hashedNewPassword = _userManager.PasswordHasher.HashPassword(cUser, newPassword);

                        await store.SetPasswordHashAsync(cUser, hashedNewPassword);

                        await store.UpdateAsync(cUser);

                        StatusMessage = "密码已经成功修改";
                    }
                }
            }
            return(RedirectToPage());
        }
Esempio n. 5
0
        private async Task LoadSharedKeyAndQrCodeUriAsync(VehicleUser user)
        {
            // Load the authenticator key & QR code URI to display on the form
            var unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user);

            if (!string.IsNullOrEmpty(unformattedKey))
            {
                SharedKey        = FormatKey(unformattedKey);
                AuthenticatorUri = GenerateQrCodeUri(user.Email, unformattedKey);
            }
        }
Esempio n. 6
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            ReturnUrl = returnUrl;
            if (ModelState.IsValid)
            {
                var user = new VehicleUser {
                    UserName     = Input.Name,
                    Email        = Input.Email,
                    Type         = Input.RoleType,
                    PhoneNumber  = Input.PhoneNumber,
                    Status       = StatusType.OK,
                    CreationDate = DateTime.Now,
                };
                if (Input.RoleType == "TownManager")
                {
                    user.TownId = Input.TownId;
                }
                else if (Input.RoleType == "GroupManager")
                {
                    user.TownId  = Input.TownId;
                    user.GroupId = Input.GroupId;
                }
                var result = await _userManager.CreateAsync(user, Input.Password);

                if (result.Succeeded)
                {
                    if (Input.RoleType == "TownManager")
                    {
                        await _userManager.AddToRoleAsync(user, "TownManager");
                    }
                    else if (Input.RoleType == "GroupManager")
                    {
                        await _userManager.AddToRoleAsync(user, "GroupManager");
                    }
                    _logger.LogInformation("User created a new account with password.");

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl = Url.EmailConfirmationLink(user.Id, code, Request.Scheme);
                    await _emailSender.SendEmailConfirmationAsync(Input.Email, callbackUrl);

                    // await _signInManager.SignInAsync(user, isPersistent: false);
                    return(LocalRedirect(Url.GetLocalUrl(returnUrl)));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }
        //public async Task<IActionResult> OnGetAsync()
        //{
        //    var user = await _userManager.GetUserAsync(User);
        //    if (user == null)
        //    {
        //        throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
        //    }

        //    var hasPassword = await _userManager.HasPasswordAsync(user);
        //    if (!hasPassword)
        //    {
        //        return RedirectToPage("./SetPassword");
        //    }
        //    ViewData["Id"] = user.Id;
        //    return Page();
        //}

        public async Task <IActionResult> OnGetAsync(string id)
        {
            if (id == null)
            {
                var user = await _userManager.GetUserAsync(User);

                if (user == null)
                {
                    throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
                }

                var hasPassword = await _userManager.HasPasswordAsync(user);

                if (!hasPassword)
                {
                    return(RedirectToPage("./SetPassword"));
                }
                ViewData["Id"] = user.Id;
                return(Page());
            }
            else
            {
                var user = await _userManager.GetUserAsync(User);

                if (user == null)
                {
                    throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
                }

                UserStore <VehicleUser> store = new UserStore <VehicleUser>(_dbContext);
                VehicleUser             cUser = await store.FindByIdAsync(id);

                if (cUser != null)
                {
                    if (cUser.TownId == user.TownId && User.IsInRole("TownManager") ||
                        User.IsInRole("Admins") || User.IsInRole("GlobalVisitor"))
                    {
                        ViewData["Id"] = id;
                        return(Page());
                    }
                }
            }
            return(NotFound());
        }
Esempio n. 8
0
        public async Task <IActionResult> OnPostConfirmationAsync(string returnUrl = null)
        {
            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 user = new VehicleUser {
                    UserName = Input.Email, Email = Input.Email
                };
                var result = await _userManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await _userManager.AddLoginAsync(user, info);

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

                        _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);
                        return(LocalRedirect(Url.GetLocalUrl(returnUrl)));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            ReturnUrl = returnUrl;
            return(Page());
        }