using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using SharpRSS.API.Auth; using SharpRSS.API.Contracts.DTO; using SharpRSS.API.Contracts.Models; using SharpRSS.API.Contracts.Payloads; using SharpRSS.API.Data; using ToolQit; using ToolQit.Logging; namespace SharpRSS.API.Controllers { [ApiController] [SessionAuthorize] [Route("api/[controller]")] public class AuthController : ControllerBase { public AuthController(AuthService authService) { _authService = authService; _log = LogManager.CreateLogger(typeof(AuthController)); } private readonly ILog _log; private readonly AuthService _authService; [HttpPost("createuser")] [Produces("application/json")] [ProducesResponseType(StatusCodes.Status201Created)] [ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task>> CreateUser(ModifyUser payload) { var createdUserResult = await _authService.CreateUser(payload); return createdUserResult.Success ? Created("", createdUserResult) : createdUserResult.Status == ResultStatus.Failed ? BadRequest(createdUserResult) : StatusCode(StatusCodes.Status500InternalServerError, createdUserResult); } [HttpPost("updateuser")] [Produces("application/json")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task>> UpdateUser(ModifyUser payload) { var updatedUserResult = await _authService.UpdateUser(payload); return updatedUserResult.Success ? Ok(updatedUserResult) : updatedUserResult.Status == ResultStatus.Failed ? BadRequest(updatedUserResult) : StatusCode(StatusCodes.Status500InternalServerError, updatedUserResult); } [HttpDelete("deleteuser")] [Produces("application/json")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task> DeleteUser(string userId) { var removedUserResult = await _authService.RemoveUserAsync(userId); return removedUserResult.Success ? Ok(removedUserResult) : removedUserResult.Status == ResultStatus.Failed ? BadRequest(removedUserResult) : StatusCode(StatusCodes.Status500InternalServerError, removedUserResult); } [HttpGet("user")] [Produces("application/json")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] public async Task>> GetUser(string userId) { var userResult = await _authService.GetUserAsync(userId); return userResult.Success ? Ok(userResult) : BadRequest(userResult); } [HttpGet("users")] [Produces("application/json")] [ProducesResponseType(StatusCodes.Status200OK)] [ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status500InternalServerError)] public async Task>> GetUsers(string search = "", int results = 20, int skip = 0) { var usersResult = await _authService.GetUsersAsync(results, skip, search); return usersResult.Success ? Ok(usersResult) : usersResult.Status == ResultStatus.Failed ? BadRequest(usersResult) : StatusCode(StatusCodes.Status500InternalServerError, usersResult); } } }