Esempio n. 1
0
        public async Task <IActionResult> OnGetAsync()
        {
            var user = await userManager.GetUserAsync(User);

            if (user == null)
            {
                return(NotFound($"Unable to load user with ID '{userManager.GetUserId(User)}'."));
            }

            var userName = await userManager.GetUserNameAsync(user);

            var name        = user.Name;
            var description = user.Description;
            var location    = user.Location;
            var website     = user.Website;

            Username = userName;

            Input = new ProfileInputModel
            {
                Name        = name,
                Description = description,
                Location    = location,
                Website     = website,
                Avatar      = null,
                Cover       = null,
            };

            return(Page());
        }
Esempio n. 2
0
        public IActionResult Update()
        {
            if (HttpContext.Session.GetString(SessionKeyID) != null && HttpContext.Session.GetString(SessionKeyID) != "")
            {
                EditProfile data = new EditProfile();
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri(BaseAPI + "Profile/");
                    ProfileInputModel filter = new ProfileInputModel();
                    filter.UserID = Guid.Parse(HttpContext.Session.GetString(SessionKeyID).ToString());
                    var responseTask = client.PostAsJsonAsync <ProfileInputModel>("GetProfile", filter);
                    responseTask.Wait();

                    var result = responseTask.Result;
                    if (result.IsSuccessStatusCode)
                    {
                        var content = result.Content.ReadAsStringAsync();
                        ProfileResponseModel resutl = Newtonsoft.Json.JsonConvert.DeserializeObject <ProfileResponseModel>(content.Result);
                        data.val = resutl.data;
                    }
                    else                     //web api sent error response
                    {
                        //log response status here..
                        ModelState.AddModelError(string.Empty, "Terjadi kesalahan server. Hubungi admin.");
                    }
                }
                return(View(data));
            }
            else
            {
                ModelState.AddModelError(string.Empty, "Terjadi kesalahan server. Hubungi admin.");
                return(RedirectToAction("Index", "Home"));
            }
        }
Esempio n. 3
0
        public ActionResult <ProfileResponseModel> GetProfile([FromBody] ProfileInputModel data)
        {
            try
            {
                ProfileBL profileBL = new ProfileBL(DbContext);
                var       res       = profileBL.GetCompleteProfie(data.UserID);
                res.PPNDefault = AppSettings.PPNDefault;

                ProfileResponseModel response = new ProfileResponseModel();

                response.data     = res;
                response.Message  = "Success";
                response.Response = true;

                return(response);
            }
            catch (Exception ex)
            {
                ProfileResponseModel logres = new ProfileResponseModel();
                logres.Message  = ex.Message;
                logres.Response = false;

                return(logres);
            }
        }
Esempio n. 4
0
        public async Task <IActionResult> AccountAsync(ProfileInputModel input)
        {
            if (!ModelState.IsValid)
            {
                return(View(input));
            }

            var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
            var user   = _userService.GetUser(userId);

            if (!string.IsNullOrEmpty(input.NewPassword))
            {
                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(View(input));
                }
                else
                {
                    await _signInManager.RefreshSignInAsync(user);

                    _logger.LogInformation("{user} changed password successfully.", user.Email);
                }
            }

            _mapper.Map(input, user);

            if (input.ProgramIds == null)
            {
                user.UserPrograms.Clear();
            }
            else
            {
                var currentProgramIds  = user.UserPrograms.Select(e => e.ProgramId).ToHashSet();
                var programIdsToRemove = currentProgramIds.Except(input.ProgramIds).ToHashSet();
                var programIdsToAdd    = input.ProgramIds.Except(currentProgramIds).ToList();
                user.UserPrograms.RemoveAll(p => programIdsToRemove.Contains(p.ProgramId));
                user.UserPrograms.AddRange(programIdsToAdd.Select(id => new UserProgram
                {
                    UserId    = user.Id,
                    ProgramId = id
                }));
            }

            _userService.SaveChanges();
            _logger.LogInformation("{user} updated profile info.", user.Email);

            return(RedirectToAction("Index"));
        }
Esempio n. 5
0
        private void ValidateUser(ProfileInputModel model, string id = null)
        {
            if (string.IsNullOrEmpty(model.Username))
            {
                this.ModelState.AddModelError(nameof(ProfileInputModel.Username), "Username is required!");
            }
            else if (this.profileService.UserExistsByUsername(model.Username, id))
            {
                this.ModelState.AddModelError(nameof(ProfileInputModel.Username), "User with the same 'Username' already exists.");
            }

            if (this.profileService.UserExistsByEmail(model.Email, id))
            {
                this.ModelState.AddModelError(nameof(ProfileInputModel.Email), "User with the same 'Email' already exists.");
            }
        }
Esempio n. 6
0
        public async Task <IActionResult> Register(ProfileInputModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var response = await _mediator.Send(model);

            if (response.HasErrors)
            {
                MapToModelState(response);
                return(View(model));
            }

            return(RedirectToAction("Login"));
        }
Esempio n. 7
0
        public IActionResult Update()
        {
            if (HttpContext.Session.GetString(SessionKeyID) != null && HttpContext.Session.GetString(SessionKeyID) != "")
            {
                EditProfile data = new EditProfile();
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri(BaseAPI + "Profile/");
                    ProfileInputModel filter = new ProfileInputModel();
                    filter.UserID = Guid.Parse(HttpContext.Session.GetString(SessionKeyID).ToString());
                    var responseTask = client.PostAsJsonAsync <ProfileInputModel>("GetProfile", filter);
                    responseTask.Wait();

                    var result = responseTask.Result;
                    if (result.IsSuccessStatusCode)
                    {
                        var content = result.Content.ReadAsStringAsync();
                        ProfileResponseModel resutl = Newtonsoft.Json.JsonConvert.DeserializeObject <ProfileResponseModel>(content.Result);
                        data.val = resutl.data;
                    }
                    else                     //web api sent error response
                    {
                        //log response status here..
                        ModelState.AddModelError(string.Empty, "Server error. Please contact administrator.");
                    }
                }
                return(View(data));
            }
            else
            {
                ModelState.AddModelError(string.Empty, "Server Error. Please contact administrator.");
                if (HttpContext.Session.GetString(Loginfrom) == "ADM/SPV")
                {
                    return(RedirectToAction("AdminLogon", "Login"));
                }
                else if (HttpContext.Session.GetString(Loginfrom) == "MDO")
                {
                    return(RedirectToAction("OwnerLogon", "Login"));
                }
                else
                {
                    return(RedirectToAction("BuyerLogon", "Login"));
                }
                //return RedirectToAction("Logon", "Login");
            }
        }
Esempio n. 8
0
        private async Task LoadAsync(WebbShopUser user)
        {
            var userName = await _userManager.GetUserNameAsync(user);

            var phoneNumber = await _userManager.GetPhoneNumberAsync(user);

            Username = userName;

            Input = new ProfileInputModel
            {
                PhoneNumber   = phoneNumber,
                FirstName     = user.FirstName,
                LastName      = user.LastName,
                StreetAddress = user.StreetAddress,
                PostalCode    = user.PostalCode,
                City          = user.City
            };
        }
Esempio n. 9
0
        private async Task LoadAsync(ApplicationUser user)
        {
            var appUser = await _manageUsers.GetUserAsync(user.Id);

            Username = appUser.UserName;

            Input = new ProfileInputModel
            {
                DisplayName = appUser.DisplayName,
                Title       = appUser.Title,
                Location    = appUser.Location,
                About       = appUser.About,
                PhoneNumber = appUser.PhoneNumber,
                GitHub      = appUser.GitHub,
                Twitter     = appUser.Twitter,
                LinkedIn    = appUser.LinkedIn,
                Website     = appUser.Website
            };
        }
Esempio n. 10
0
        public async Task <IActionResult> EditProfile()
        {
            // Get User Data
            var user = await _userManager.GetUserAsync(User);

            var profile = new ProfileInputModel
            {
                Id              = user.Id,
                FirstName       = user.FirstName,
                LastName        = user.LastName,
                Email           = user.Email,
                FavoriteBook    = user.FavoriteBook,
                Image           = user.Image,
                FullName        = user.FullName,
                ShippingAddress = user.ShippingAddress,
                City            = user.City,
                State           = user.State,
                Postcode        = user.Postcode,
                Country         = user.Country
            };

            return(View(profile));
        }
Esempio n. 11
0
        public async Task <IActionResult> EditProfile(ProfileInputModel model)
        {
            if (!ModelState.IsValid)
            {
                ViewData["ErrorMessage"] = "Error";

                return(View());
            }
            _accountService.ProcessProfile(model); //Error handling

            var user = await _userManager.GetUserAsync(User);

            //Update Properties
            user.FirstName       = model.FirstName;
            user.LastName        = model.LastName;
            user.FavoriteBook    = model.FavoriteBook;
            user.Image           = model.Image;
            user.FullName        = model.FullName;
            user.ShippingAddress = model.ShippingAddress;
            user.City            = model.City;
            user.State           = model.State;
            user.Postcode        = model.Postcode;
            user.Country         = model.Country;

            var result = await _userManager.UpdateAsync(user);

            if (result.Succeeded)
            {
                return(RedirectToAction("MyProfile", "Account"));
            }
            else
            {
                ViewData["ErrorMessage"] = "Failed to save changes, please try again";

                return(View(model));
            }
        }
Esempio n. 12
0
        public void ProcessProfile(ProfileInputModel profile)
        {
            if (string.IsNullOrEmpty(profile.FirstName))
            {
                throw new Exception("First name is missing");
            }

            if (string.IsNullOrEmpty(profile.LastName))
            {
                throw new Exception("Last name is missing");
            }
            if (string.IsNullOrEmpty(profile.FullName))
            {
                throw new Exception("Name is missing");
            }

            if (string.IsNullOrEmpty(profile.ShippingAddress))
            {
                throw new Exception("Address is missing");
            }

            if (string.IsNullOrEmpty(profile.City))
            {
                throw new Exception("City is missing");
            }

            if (string.IsNullOrEmpty(profile.Postcode))
            {
                throw new Exception("Postcode is missing");
            }

            if (string.IsNullOrEmpty(profile.Country))
            {
                throw new Exception("Country is missing");
            }
        }
        public async Task <IActionResult> Index(ProfileInputModel model)
        {
            var vm = model as ProfileViewModel;

            var user = await _userManager.GetUserAsync(User);

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

            if (!ModelState.IsValid)
            {
                return(View(vm));
            }

            var username = await _userManager.GetUserNameAsync(user);

            if (!string.Equals(username, model.Username, StringComparison.InvariantCulture))
            {
                var result = await _userManager.SetUserNameAsync(user, model.Username);

                if (!result.Succeeded)
                {
                    ViewData["StatusMessage"] = "Ops... si &egrave; verificato un errore inaspettato durante il salvataggio dello username.";
                    return(View(vm));
                }
            }

            var phoneNumber = await _userManager.GetPhoneNumberAsync(user);

            if (!string.Equals(model.PhoneNumber, phoneNumber, StringComparison.InvariantCulture))
            {
                var result = await _userManager.SetPhoneNumberAsync(user, model.PhoneNumber);

                if (!result.Succeeded)
                {
                    ViewData["StatusMessage"] = "Ops... si &egrave; verificato un errore inaspettato durante il salvataggio del nuovo numero di telefono.";
                    return(View(vm));
                }
            }

            if (!string.Equals(model.GivenName, user.GivenName, StringComparison.OrdinalIgnoreCase) || !string.Equals(model.FamilyName, user.FamilyName, StringComparison.InvariantCultureIgnoreCase))
            {
                user.GivenName  = model.GivenName;
                user.FamilyName = model.FamilyName;
                user.Name       = $"{model.GivenName} {model.FamilyName}";

                var claims = await _userManager.GetClaimsAsync(user);

                foreach (var claim in claims)
                {
                    switch (claim.Type)
                    {
                    case "name":
                        await _userManager.ReplaceClaimAsync(user, claim, new Claim("name", user.Name));

                        break;

                    case "given_name":
                        await _userManager.ReplaceClaimAsync(user, claim, new Claim("given_name", user.GivenName ?? string.Empty));

                        break;

                    case "family_name":
                        await _userManager.ReplaceClaimAsync(user, claim, new Claim("family_name", user.FamilyName ?? string.Empty));

                        break;
                    }
                }


                var result = await _userManager.UpdateAsync(user);

                if (!result.Succeeded)
                {
                    ViewData["StatusMessage"] = "Ops... si &egrave; verificato un errore inaspettato.";
                    return(View(vm));
                }
            }

            await _signInManager.RefreshSignInAsync(user);

            ViewData["StatusMessage"] = "Profilo aggiornato con successo";

            return(View(vm));
        }
Esempio n. 14
0
        public async Task <IActionResult> EditUser(ProfileInputModel postedData)
        {
            if (!ModelState.IsValid)
            {
                foreach (var modelError in ModelState)
                {
                    if (modelError.Value.Errors.Count > 0)
                    {
                        Response.StatusCode = (int)HttpStatusCode.Forbidden;
                        return(Json(new { Message = modelError.Value.Errors[0].ErrorMessage }));
                    }
                }
            }

            if (postedData == null)
            {
                return(NotFound("No data posted."));
            }

            _logger.LogInformation("Getting authenticated User");
            var userToUpdate = await _userManager.GetUserAsync(User);

            if (userToUpdate == null)
            {
                _logger.LogInformation("Authenticated User NOT FOUND");
                return(NotFound("User not found."));
            }

            if (userToUpdate.Slug.Equals(postedData.Slug, StringComparison.InvariantCultureIgnoreCase))
            {
                Response.StatusCode = (int)HttpStatusCode.Forbidden;
                return(Json(new { Message = "You can't edit other User's profile." }));
            }

            userToUpdate.UserName = postedData.UserName;
            userToUpdate.Bio      = postedData.Bio;
            userToUpdate.Location = postedData.Location;
            userToUpdate.Website  = postedData.Website;

            if (postedData.Avatar?.Length > 0)
            {
                userToUpdate.Avatar = await _userService.UploadImage(postedData.Avatar, Globals.AvatarsFolder);
            }
            else
            {
                userToUpdate.Avatar = Globals.DefaultAvatar;
            }

            if (postedData.Banner?.Length > 0)
            {
                userToUpdate.Banner = await _userService.UploadImage(postedData.Banner, Globals.BannersFolder);
            }
            else
            {
                userToUpdate.Banner = Globals.DefaultBanner;
            }

            _logger.LogInformation("Updating User ({ID})", userToUpdate.Id);
            await _userService.UpdateUserAsync(userToUpdate);

            return(Json(new
            {
                userToUpdate.UserName,
                userToUpdate.Bio,
                userToUpdate.Location,
                userToUpdate.Website,
                Avatar = string.Concat("/images/profile-images/", userToUpdate.Avatar),
                Banner = string.Concat("/images/profile-banners/", userToUpdate.Banner)
            }));
        }