private IUser CreateUser(UserDetailOutput userDetail, Guid token)
        {
            var personDetail = this.organizationUnitClient.Value.PersonDetail(new PersonDetailInput
            {
                ID       = userDetail.ID_Person.Value,
                ID_Login = token
            });

            string uniqueUserName = usernameService.Calculate(userDetail.UserName);

            var newUser = this.membershipService.CreateUser(new CreateUserParams(
                                                                uniqueUserName,
                                                                passwordGeneratorService.Generate(),
                                                                personDetail.Email,
                                                                T("Auto Registered User").Text,
                                                                passwordGeneratorService.Generate(),
                                                                true));

            var userPart = newUser.As <SkautIsUserPart>();

            userPart.SkautIsUserId = userDetail.ID.Value;
            userPart.PersonId      = personDetail.ID.Value;

            return(newUser);
        }
Example #2
0
        public async Task <object> Login([FromBody] LoginDto loginData)
        {
            var result = await _signInManager.PasswordSignInAsync(loginData.Email, loginData.Password, false, false);

            if (result.Succeeded)
            {
                var appUser  = _userManager.Users.SingleOrDefault(r => r.Email == loginData.Email);
                var AppLogin = new AppUserLogin
                {
                    active      = appUser.Active,
                    Email       = appUser.Email,
                    id          = appUser.Id,
                    SAPID       = appUser.SAPID,
                    Name        = appUser.Name,
                    User        = appUser.UserName,
                    Active_Burn = appUser.Active_Burn,
                    Serie       = appUser.Serie
                };
                var token = await GenerateJwtToken(loginData.Email, appUser);

                appUser.Warehouse = _context.Warehouses.Find(appUser.WarehouseID);
                //UserDetailOutput Roles = Redirect($"/api/User/{appUser.Id}");
                UserController   userController = new UserController(_context, _userManager, _roleManager);
                var              Roles          = (ObjectResult)userController.Get(appUser.Id).Result;
                UserDetailOutput userDetail     = (UserDetailOutput)Roles.Value;
                //Task<IActionResult> RolList = new RoleController(_context,_roleManager).Get(Roles.RoleId);
                return(Ok(new { token, AppLogin, warehouseCode = appUser.Warehouse.WhsCode, userDetail.RolePermissions }));
            }
            return(BadRequest("Error al Intentar Iniciar Sesion"));
        }
Example #3
0
        public async Task <IActionResult> Get(string id)
        {
            // TODO: Change This.
            var user1 = _context.Users.Where(User => User.Id == id).Select(User => (new { Department = User.Department.Name, Warehouse = User.Warehouse.WhsName }));


            User user = await _userManager.FindByIdAsync(id);

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

            IList <string> userRoleNames = await _userManager.GetRolesAsync(user);

            List <PermissionsOutput> RolePermissions = new List <PermissionsOutput>();

            if (userRoleNames.Count != 0)
            {
                IQueryable <IdentityRole> userRoles = _roleManager.Roles.Where(x => userRoleNames.Contains(x.Name));

                IList <Claim> roleClaims = await _roleManager.GetClaimsAsync(userRoles.FirstOrDefault());

                IEnumerable <string> PermissionsClaims = roleClaims.Where(x => x.Type == CustomClaimTypes.Permission).Select(x => x.Value);

                RolePermissions = Permission.Get(PermissionsClaims.ToList());
            }

            IList <Claim> userClaims = await _userManager.GetClaimsAsync(user);

            List <PermissionsOutput> PermissionsExtra = new List <PermissionsOutput>();

            if (userClaims.Count != 0)
            {
                IEnumerable <string> PermissionsExtraClaims = userClaims.Where(x => x.Type == CustomClaimTypes.Permission).Select(x => x.Value);
                PermissionsExtra = Permission.Get(PermissionsExtraClaims.ToList());
            }

            UserDetailOutput result = new UserDetailOutput {
                Id               = user.Id,
                Email            = user.Email,
                Name             = user.Name,
                LastName         = user.LastName,
                Active           = user.Active,
                SAPID            = user.SAPID,
                Department       = user1.FirstOrDefault().Department,
                Warehouse        = user1.FirstOrDefault().Warehouse,
                Role             = userRoleNames.FirstOrDefault(),
                RolePermissions  = RolePermissions,
                PermissionsExtra = PermissionsExtra,
            };

            return(Ok(result));
        }
        private IUser GetOrCreateUser(UserDetailOutput userDetail, Guid token)
        {
            if (userDetail == null || !userDetail.ID.HasValue)
            {
                return(null);
            }

            var userPart = this.contentManager.Query <SkautIsUserPart>()
                           .Where <SkautIsUserPartRecord>(u => u.SkautIsUserId == userDetail.ID.Value)
                           .List().FirstOrDefault();

            var user = (userPart != null)
                ? this.membershipService.GetUser(userPart.As <UserPart>().UserName)
                : this.CreateUser(userDetail, token);

            this.UpdateUserInfo(user, token);

            return(user);
        }