using DamageAssesment.Api.UsersAccess.Interfaces; using DamageAssesment.Api.UsersAccess.Models; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; namespace DamageAssesment.Api.UsersAccess.Controllers { [ApiController] public class UsersAccessController : ControllerBase { private IUsersAccessProvider userAccessProvider; public UsersAccessController(IUsersAccessProvider userAccessProvider) { this.userAccessProvider = userAccessProvider; } // [HttpPost("dadeschooltoken")] // public async Task DadeSchoolAuthenticateAsync(string username, string password) //{ // var result = await userAccessProvider.DadeSchoolAuthenticateAsync(username, password); // if (result.IsSuccess) // { // return Ok(result.TokenResponse); // } // return Unauthorized(result.ErrorMessage); // } // [Authorize(Policy = "Dadeschools")] [HttpPost("token/{employecode}")] public async Task AuthenticateAsync(string employecode) { var result = await userAccessProvider.AuthenticateAsync(employecode); if (result.IsSuccess) { return Ok(result.TokenResponse); } return Unauthorized(result.ErrorMessage); } // [Authorize(Policy = "Dadeschools")] [HttpPost("refreshtoken")] public async Task RefreshTokenAsync(TokenResponse tokenResponse) { var result = await userAccessProvider.RefreshTokenAsync(tokenResponse); if (result.IsSuccess) { return Ok(result.TokenResponse); } return Unauthorized(result.ErrorMessage); } // [Authorize(Policy = "DamageApp", Roles ="admin")] [HttpGet("users")] public async Task GetUsersAsync() { var result = await userAccessProvider.GetUsersAsync(); if (result.IsSuccess) { return Ok(result.Users); } return NoContent(); } // [Authorize(Policy = "DamageApp", Roles = "admin")] [HttpGet("users/{Id}")] public async Task GetUsersAsync(int Id) { var result = await userAccessProvider.GetUsersAsync(Id); if (result.IsSuccess) { return Ok(result.User); } return NotFound(); } // [Authorize(Policy = "DamageApp", Roles = "admin")] [HttpGet("roles")] public async Task GetRolesAsync() { var result = await userAccessProvider.GetRolesAsync(); if (result.IsSuccess) { return Ok(result.Roles); } return NoContent(); } // [Authorize(Policy = "DamageApp", Roles = "admin")] [HttpPost("users")] public async Task PostUserAsync(User user) { var result = await userAccessProvider.PostUserAsync(user); if (result.IsSuccess) { return Ok(result.User); } return BadRequest(result.ErrorMessage); } // [Authorize(Policy = "DamageApp", Roles = "admin")] [HttpPut("users/{Id}")] public async Task PutUserAsync(int Id, User user) { var result = await userAccessProvider.PutUserAsync(Id, user); if (result.IsSuccess) { return Ok(result.User); } if (result.ErrorMessage == "Not Found") return NotFound(result.ErrorMessage); return BadRequest(result.ErrorMessage); } // [Authorize(Policy = "DamageApp", Roles = "admin")] [HttpDelete("users/{Id}")] public async Task DeleteUserAsync(int Id) { var result = await userAccessProvider.DeleteUserAsync(Id); if (result.IsSuccess) { return Ok(result.User); } return NotFound(); } } }