public async Task <IActionResult> SetPropertyAsync(string subject, string type)
        {
            if (IsNullOrWhiteSpace(subject))
            {
                ModelState["subject.String"].Errors.Clear();
                ModelState.AddModelError("", Messages.SubjectRequired);
            }

            type = type.FromBase64UrlEncoded();

            var value = await Request.Body.ReadAsStringAsync();

            var meta = await GetMetadataAsync();

            ValidateUpdateProperty(meta.UserMetadata, type, value);

            if (ModelState.IsValid)
            {
                var result = await service.SetUserPropertyAsync(subject, type, value);

                if (result.IsSuccess)
                {
                    return(NoContent());
                }

                ModelState.AddErrors(result);
            }

            return(BadRequest(ModelState.ToError()));
        }
Example #2
0
        public IActionResult AddExisting([FromRoute] string groupId, [FromBody] AddExistingUserRequest addExistingUserRequest)
        {
            Core.Models.Result.Result result = _groupUserService.AddExisting(groupId, addExistingUserRequest);
            if (result.Failure)
            {
                ModelState.AddErrors(result);
                return(BadRequest(ModelState));
            }

            return(Ok(new EmptyResult()));
        }
Example #3
0
        public IActionResult Profile()
        {
            Core.Models.Result.Result <ProfileViewModel> result = _manageDataService.GetProfile(GetUserId());
            if (result.Failure)
            {
                ModelState.AddErrors(result.Errors);
                return(View("Profile"));
            }

            return(View("Profile", result.Value));
        }
Example #4
0
        public IActionResult Remove([FromRoute] long groupUserId)
        {
            Core.Models.Result.Result result = _groupUserService.Remove(groupUserId);
            if (result.Failure)
            {
                ModelState.AddErrors(result);
                return(BadRequest(ModelState));
            }

            return(Ok(new EmptyResult()));
        }
Example #5
0
        public IActionResult ChangeRole([FromRoute] string groupId, [FromRoute] long groupUserId, [FromQuery] string roleId)
        {
            Core.Models.Result.Result result = _groupUserService.ChangeRole(groupUserId, roleId, User.GetUserId(_identityUIClaimOptions));
            if (result.Failure)
            {
                ModelState.AddErrors(result);
                return(BadRequest(ModelState));
            }

            return(Ok(new EmptyResult()));
        }
Example #6
0
        public async Task <IActionResult> ProfileImage([FromForm] UploadProfileImageRequest uploadImageRequest)
        {
            Result result = await _profileImageService.UpdateProfileImage(GetUserId(), uploadImageRequest);

            if (result.Failure)
            {
                ModelState.AddErrors(result);
                return(BadRequest(ModelState));
            }

            return(Ok(new EmptyResult()));
        }
        public ActionResult <TransactionGetDto> Post([FromBody][Required] TransactionPostDto value)
        {
            // Validate
            var validateResult = _dtoValidationService.ValidateTransferDto(value);

            if (validateResult.HasErrors())
            {
                ModelState.AddErrors(validateResult);
            }

            if (!ModelState.IsValid)
            {
                _logger.LogStateWarning("This model is invalid.", ModelState);
                return(BadRequest(ModelState));
            }

            // Work
            var user = _userRepository.GetUser(User.Identity.Name);

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

            var(transaction, transferResult) = _bankService.TryTransferMoney(
                user,
                value.Sum,
                value.From,
                value.To);

            if (transferResult.HasErrors())
            {
                ModelState.AddErrors(transferResult);
                _logger.LogStateError("Transferring was unsuccessfully.", ModelState);

                return(BadRequest(ModelState));
            }

            var cardFromNumber = value.From.ToNormalizedCardNumber();

            var dto = _dtoFactory.Map(transaction, TryValidateModel);

            switch (dto)
            {
            // Validate
            case null:
                _logger.LogError("Transferring was unsuccessfully.");
                return(BadRequest("Transferring error"));

            default:
                return(Created($"/transactions/{cardFromNumber}", dto));
            }
        }
        public async Task <IActionResult> Remove([FromRoute] string userId, [FromRoute] long attributeId)
        {
            Result result = await _userAttributeService.Remove(userId, attributeId);

            if (result.Failure)
            {
                ModelState.AddErrors(result);
                return(BadRequest(ModelState));
            }

            return(Ok(new EmptyResult()));
        }
        public async Task <IActionResult> Add([FromRoute] string userId, [FromBody] AddUserAttributeModel addUserAttribute)
        {
            Result result = await _userAttributeService.Add(userId, addUserAttribute);

            if (result.Failure)
            {
                ModelState.AddErrors(result);
                return(BadRequest(ModelState));
            }

            return(Ok(new EmptyResult()));
        }
        public async Task <IActionResult> Get([FromRoute] string userId, [FromQuery] DataTableRequest dataTableRequest)
        {
            Result <DataTableResult <UserAttributeTableModel> > result = await _userAttributeDataService.Get(userId, dataTableRequest);

            if (result.Failure)
            {
                ModelState.AddErrors(result);
                return(BadRequest(result));
            }

            return(Ok(result.Value));
        }
Example #11
0
        public async Task <IActionResult> ResetPassword(ResetPasswordDto dto)
        {
            var result = await _mediator.Send(new ResetPasswordRequest(dto));

            if (!result.Succeeded)
            {
                ModelState.AddErrors(result);
                return(BadRequest(ModelState));
            }

            return(Ok(new ResponseViewModel("Your password has been reset.")));
        }
        public async Task <IActionResult> ChangePassword(ChangePasswordDto dto)
        {
            var result = await _mediator.Send(new ChangePasswordRequest(User.Identity.Name, dto));

            if (!result.Succeeded)
            {
                ModelState.AddErrors(result);
                return(BadRequest(ModelState));
            }

            return(Ok(new ResponseViewModel("Your password has been changed!")));
        }
        public async Task <IActionResult> Register([FromBody] RegisterDto dto)
        {
            var result = await _mediator.Send(new RegisterUserRequest(dto, Request.Scheme));

            if (!result.Succeeded)
            {
                ModelState.AddErrors(result);
                return(BadRequest(ModelState));
            }

            return(Ok(new ResponseViewModel("Your account has been created; please check your inbox!")));
        }
Example #14
0
        public IActionResult Leave([FromRoute] string groupId)
        {
            //TODO: change for impersonation

            Core.Models.Result.Result result = _groupUserService.Leave(User.GetUserId(_identityUIClaimOptions), groupId);
            if (result.Failure)
            {
                ModelState.AddErrors(result);
                return(BadRequest(ModelState));
            }

            return(Ok(new EmptyResult()));
        }
        public ActionResult <CardGetDto> Post([FromBody] CardPostDto value)
        {
            // Validate
            var validateResult = _dtoValidationService.ValidateOpenCardDto(value);

            if (validateResult.HasErrors())
            {
                ModelState.AddErrors(validateResult);
            }

            if (!ModelState.IsValid)
            {
                _logger.LogStateWarning("This model is invalid.", ModelState);
                return(BadRequest(ModelState));
            }

            // Select
            var user = _userRepository.GetUser(User.Identity.Name, false);

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

            var(card, openResult) = _bankService.TryOpenNewCard(
                user,
                value.Name,
                (Currency)value.Currency,
                (CardType)value.Type);

            if (openResult.HasErrors())
            {
                ModelState.AddErrors(openResult);
                _logger.LogStateError("Opening card was unsuccessfully.", ModelState);
                return(BadRequest(ModelState));
            }

            // Mapping
            var dto = _dtoFactory.Map(card, TryValidateModel);

            switch (dto)
            {
            // Validate
            case null:
                _logger.LogError("Opening card was unsuccessfully.");
                return(BadRequest("Не удалось выпустить карту"));

            default:
                return(Created($"/api/cards/{dto.Number}", dto));
            }
        }
Example #16
0
        public async Task <IActionResult> Index()
        {
            CredentailsViewModel credentailsViewModel = await _credentialsDataService.GetViewModel();

            StatusAlertViewModel statusAlert = GetTempData <StatusAlertViewModel>(STATUS_ALERT_TEMP_DATA_KEY);

            if (statusAlert != null)
            {
                ModelState.AddErrors(statusAlert.ValidationErrors);
                credentailsViewModel.StatusAlert = statusAlert;
            }

            return(View(credentailsViewModel));
        }
        public IActionResult CreateInitialUser(RegisterViewModel model, string returnUrl = null)
        {
            var users = _identityService.GetUsersInRole(Constants.Roles.Administrator);

            if (users.Result.Any())
            {
                return(RedirectToActionPermanent(nameof(LoginController.Index), "Login", new { returnUrl }));
            }

            if (ModelState.IsValid)
            {
                var result = _identityService.CreateUser(model);

                if (result.Result.Result.Succeeded)
                {
                    var roleResult = _identityService.AddUserToRole(result.Result.CreatedUser, Constants.Roles.Administrator);

                    if (roleResult.Result.Succeeded)
                    {
                        var signInResult = _identityService.SignInUser(new SignInViewModel
                        {
                            Email    = model.Email,
                            Password = model.Password
                        });

                        if (signInResult.Result.Succeeded)
                        {
                            if (string.IsNullOrEmpty(returnUrl))
                            {
                                return(RedirectToAction(nameof(CmsController.Index), "Cms"));
                            }

                            return(Redirect(returnUrl));
                        }

                        return(RedirectToAction(nameof(LoginController.Index), "Login", new { returnUrl }));
                    }

                    ModelState.AddErrors(roleResult.Result);
                }
                else
                {
                    ModelState.AddErrors(result.Result.Result);
                }
            }

            ViewData[Constants.ViewData.ReturnUrl] = returnUrl;
            return(View(model));
        }
Example #18
0
        public async Task <ActionResult> ExternalLoginConfirmation(
            ExternalLoginConfirmationViewModel model)
        {
            if (User.Identity?.IsAuthenticated == true)
            {
                return(RedirectToAction("Index", "Manage"));
            }

            if (ModelState.IsValid)
            {
                // Get the information about the user from the external login provider
                var loginInfo = await SignInManager.GetExternalLoginInfoAsync();

                if (loginInfo == null)
                {
                    return(View("ExternalLoginFailure"));
                }

                var email = loginInfo.Principal.FindFirstValue(ClaimTypes.Email);

                var user = new JoinIdentityUser()
                {
                    UserName = email
                };
                var result = await UserManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await UserManager.AddLoginAsync(user, loginInfo);

                    if (result.Succeeded)
                    {
                        var token = await UserManager.GenerateEmailConfirmationTokenAsync(user);

                        _ = await UserManager.ConfirmEmailAsync(user, token);

                        await SignInManager.SignInAsync(user, isPersistent : true);

                        await externalLoginProfileExtractor.TryExtractProfile(user, loginInfo);

                        return(RedirectToLocal(model.ReturnUrl));
                    }
                }

                ModelState.AddErrors(result);
            }

            return(View(model));
        }
Example #19
0
        public async Task <IActionResult> Edit(ChangePasswordEditViewModel viewModel)
        {
            var user = await _userManager.GetUserAsync(User);

            var result = await _userManager.ChangePasswordAsync(user, viewModel.OldPassword, viewModel.NewPassword);

            if (result.Succeeded)
            {
                return(RedirectToAction(nameof(Edit)));
            }

            ModelState.AddErrors(result.Errors);

            return(View(viewModel));
        }
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var currentUser = await UserManager.FindByNameAsync(model.Email);

            if (currentUser != null)
            {
                ModelState.AddModelError("",
                                         "Вы уже зарегистрировались. Если пароль не подходит, нажмите «Забыли пароль?»");
                return(View("Login", new LoginViewModel()
                {
                    Email = model.Email
                }));
            }

            var passValidateResult =
                await UserManager.PasswordValidator.ValidateAsync(model.Password);

            if (!passValidateResult.Succeeded)
            {
                ModelState.AddErrors(passValidateResult);
                return(View(model));
            }

            var user = new JoinIdentityUser {
                UserName = model.Email
            };
            var result = await UserManager.CreateAsync(user);

            if (!result.Succeeded)
            {
                ModelState.AddErrors(result);
                return(View(model));
            }

            //We don't want to sign in user until he has email confirmed
            //await SignInManager.SignInAsync(user, isPersistent:false, rememberBrowser:false);

            await UserManager.SetPasswordWithoutValidationAsync(user.Id, model.Password);

            await SendConfirmationEmail(user);

            return(View("RegisterSuccess"));
        }
Example #21
0
        public async Task<IActionResult> AcceptInvite(AcceptInviteRequest acceptInvite)
        {
            if (!ModelState.IsValid)
            {
                return View();
            }

            Result result = await _addUserService.AcceptInvite(acceptInvite);
            if (result.Failure)
            {
                ModelState.AddErrors(result);
                return View();
            }

            return RedirectToAction(nameof(RegisterSuccess));
        }
Example #22
0
        public async Task<IActionResult> ConfirmEmail(string id, string code)
        {
            if(!ModelState.IsValid)
            {
                return View();
            }

            Result result = await _emailConfirmationService.ConfirmEmail(id, code);
            if(result.Failure)
            {
                ModelState.AddErrors(result.Errors);
                return View();
            }

            return View();
        }
Example #23
0
        public async Task<IActionResult> LoginWithRecoveryCode(LoginWithRecoveryCodeRequest loginWithRecoveryCode, string returnUrl = null)
        {
            if (!ModelState.IsValid)
            {
                return View(new LoginWithRecoveryCodeViewModel(returnUrl));
            }

            Result result = await _loginService.LoginWithRecoveryCode(loginWithRecoveryCode);
            if (result.Failure)
            {
                ModelState.AddErrors(result);
                return View(new LoginWithRecoveryCodeViewModel(returnUrl));
            }

            return LocalRedirect(returnUrl);
        }
Example #24
0
        public async Task <IActionResult> SignUp(SignUpViewModel form, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                var userCreation = await UserManager.CreateAsync(new User { UserName = form.UserName }, form.Password);

                if (userCreation.Succeeded)
                {
                    return(await SignIn(form, returnUrl));
                }

                ModelState.AddErrors(userCreation.Errors, e => e.Description);
            }

            return(View());
        }
        public IActionResult Remove([FromRoute] string groupId, [FromRoute] string inviteId)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            Result result = _inviteService.Remove(inviteId);

            if (result.Failure)
            {
                ModelState.AddErrors(result);
                return(BadRequest(ModelState));
            }

            return(Ok(new EmptyResult()));
        }
        public async Task <IActionResult> Invite([FromRoute] string groupId, [FromBody] InviteToGroupRequest inviteToGroupRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            Result result = await _inviteService.InviteToGroup(groupId, inviteToGroupRequest);

            if (result.Failure)
            {
                ModelState.AddErrors(result);
                return(BadRequest(ModelState));
            }

            return(Ok(new EmptyResult()));
        }
        public IActionResult Get([FromRoute] string groupId, [FromQuery] DataTableRequest dataTableRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Result <DataTableResult <GroupInviteTableModel> > result = _groupInviteDataService.Get(groupId, dataTableRequest);

            if (result.Failure)
            {
                ModelState.AddErrors(result);
                return(BadRequest(ModelState));
            }

            return(Ok(result.Value));
        }
Example #28
0
        public IActionResult Remove([FromRoute] string roleId, [FromRoute] string roleAssignmentId)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            Result result = _roleAssignmentService.Remove(roleId, roleAssignmentId);

            if (result.Failure)
            {
                ModelState.AddErrors(result.Errors);
                return(BadRequest(ModelState));
            }

            return(Ok(new EmptyResult()));
        }
Example #29
0
        public IActionResult GetUnassigned([FromRoute] string roleId, [FromQuery] Select2Request select2Request)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Result <Select2Result <Select2ItemBase> > result = _roleAssignmentDataService.GetUnassigned(roleId, select2Request);

            if (result.Failure)
            {
                ModelState.AddErrors(result.Errors);
                return(BadRequest(ModelState));
            }

            return(Ok(result.Value));
        }
Example #30
0
        public IActionResult Get([FromRoute] string roleId, [FromQuery] DataTableRequest dataTableRequest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Result <DataTableResult <RoleAssignmentTableModel> > result = _roleAssignmentDataService.Get(roleId, dataTableRequest);

            if (result.Failure)
            {
                ModelState.AddErrors(result.Errors);
                return(BadRequest(ModelState));
            }

            return(Ok(result.Value));
        }