Ejemplo n.º 1
0
        public async Task <UserDTO> Login(LoginDTO model)
        {
            var appUser = await _userManager.FindByEmailAsync(model.Email);

            if (appUser == null)
            {
                return(null);
            }

            var result = await _signInManager.CheckPasswordSignInAsync(appUser, model.Password, false);

            if (result.Succeeded)
            {
                var claimsPrincipal = await _signInManager.CreateUserPrincipalAsync(appUser);

                var jwt = await CreateJwtTokenForUser(appUser);

                var team = await ServiceUnitOfWork.TeamRepository.FindAsync(appUser.TeamId);

                var role = await _userManager.GetRolesAsync(appUser);

                var positions = await playerPositionService.GetPlayerPositions(appUser.Id);

                var positionsDtos = MapPositionToPlayerPositionDtos(positions);

                var userDto = new UserDTO
                {
                    Id          = appUser.Id,
                    email       = appUser.Email,
                    phoneNumber = appUser.PhoneNumber,
                    teamName    = team.Name,
                    teamId      = team.Id,
                    positions   = positionsDtos,
                    token       = jwt,
                    userName    = appUser.FirstName + " " + appUser.LastName,
                    role        = role[0]
                };
                return(userDto);
            }

            return(null);
        }