Exemplo n.º 1
0
        public async Task <IActionResult> Edit(int?id, [Bind("Id,Name,Email,SelectedRoles,SelectedClaims, SelectedResources")] User user)
        {
            if (id != user.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    var claims = await _claimService.ListAsync();

                    var roles = await _roleService.GetAsync();

                    var userDto = new EditAccountRequest
                    {
                        Id                             = user.Id,
                        Name                           = user.Name,
                        Email                          = user.Email,
                        Claims                         = user.SelectedClaims != null?claims.Where(c => user.SelectedClaims.Contains(c.Value)).Select(c => c.Value).ToList() : null,
                                                 Roles = user.SelectedRoles != null?roles.Where(c => user.SelectedRoles.Contains(c.Name)).Select(c => c.Name).ToList() : null,
                                                             Resources = user.SelectedResources
                    };

                    await _userService.EditAsync(userDto);
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!UserExists(user.Id))
                    {
                        return(NotFound());
                    }
                    throw;
                }
                return(RedirectToAction("Index"));
            }
            return(View(user));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Create([Bind("Id,Name,Email,SelectedRoles,SelectedClaims,SelectedResources")] User user)
        {
            if (ModelState.IsValid)
            {
                var claims = await _claimService.ListAsync();

                var roles = await _roleService.GetAsync();

                var userDto = new CreateAccountRequest
                {
                    Name                           = user.Name,
                    Email                          = user.Email,
                    Claims                         = user.SelectedClaims != null?claims.Where(c => user.SelectedClaims.ToList().Contains(c.Value)).Select(c => c.Value).ToArray() : null,
                                             Roles = user.SelectedRoles != null?roles.Where(c => user.SelectedRoles.ToList().Contains(c.Name)).Select(c => c.Name).ToArray() : null,
                                                         Resources = user.SelectedResources
                };

                await _userService.CreateAsync(userDto);

                return(RedirectToAction("Index"));
            }
            return(View(user));
        }
Exemplo n.º 3
0
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var userDto = await _userService.GetDetailsByIdAsync(id.Value);

            if (userDto == null)
            {
                return(NotFound());
            }

            var user = new User
            {
                Id                = userDto.Id,
                Name              = userDto.UserName,
                Email             = userDto.Email,
                SelectedRoles     = userDto.Roles?.Select(r => r.Name).ToArray(),
                SelectedClaims    = userDto.Claims?.Select(c => c.Value).ToArray(),
                SelectedResources = userDto.ResourceAccesses?.Select(c => c.Id).ToArray()
            };

            var roles = await _roleService.GetAsync();

            var claims = await _claimService.ListAsync();

            var resources = await _resourceIdentityService.ListAsync();

            ViewBag.PossibleClaims            = _mapper.Map <List <ClaimBase>, List <Claim> >(claims.ToList());
            ViewBag.PossibleRoles             = _mapper.Map <List <RoleDto>, List <Role> >(roles.ToList());
            ViewBag.PossibleMerchantResources = _mapper.Map <List <ResourceIdentityDto>, List <ResourceIdentity> >(resources.Where(c => c.Type == IdentityType.Merchant).ToList());
            ViewBag.PossibleBusinessResources = _mapper.Map <List <ResourceIdentityDto>, List <ResourceIdentity> >(resources.Where(c => c.Type == IdentityType.Business).ToList());

            return(View(user));
        }