Exemple #1
0
        public async Task <DbEntity_User> CreateAsync(CreateDto_User newUser)
        {
            var createdUser = Mapper.Map <DbEntity_User>(newUser);
            var success     = await CreateAsync(createdUser);

            return(createdUser);
        }
        public async Task <IActionResult> ValidateCASTicket([FromQuery] string service, [FromQuery] string ticket)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(service))
                {
                    service = AuthConfig.LoginUrl;
                }
                if (string.IsNullOrWhiteSpace(ticket))
                {
                    throw new NotAuthorizedException();
                }
                var response = await _authService.ValidateCASTicketAsync(service, ticket);

                var           userId = response.ServiceResponse.AuthenticationSuccess.Attributes.KsuPersonWildcatId;
                DbEntity_User user;
                try
                {
                    user = await _userService.GetByIdAsync(userId);
                }
                catch (NotFoundException)
                {
                    var newUser = new CreateDto_User(response.ServiceResponse.AuthenticationSuccess.Attributes);
                    user = await _userService.CreateAsync(newUser);

                    await _userService.SaveChangesAsync();
                }
                var authDtoUser = Mapper.Map <AuthDto_User>(user);
                var newToken    = _authService.BuildToken(authDtoUser);
                Response.Headers.Add("Access-Control-Expose-Headers", "Authorization");
                Response.Headers.Add("Authorization", newToken);
                return(Ok(authDtoUser));
            }
            catch (NotAuthorizedException)
            {
                return(StatusCode(StatusCodes.Status401Unauthorized));
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message));
            }
        }