Skip to content
Snippets Groups Projects

abm usuarios

Merged Enzo Santangelo Dodera requested to merge feature/abm-usuarios into develop
7 files
+ 275
17
Compare changes
  • Side-by-side
  • Inline
Files
7
@@ -113,67 +113,177 @@ namespace Tsi1.Api.Controllers
}
}
[Authorize(Roles = UserTypes.FacultyAdmin)]
[Authorize(Roles = UserTypes.FacultyAdmin + ", " + UserTypes.UdelarAdmin)]
[HttpPost("Register")]
public async Task<IActionResult> Register(UserRegisterDto dto)
public async Task<IActionResult> Register(UserRegisterDto dto, [FromQuery] int? tenantId = null)
{
var tenantId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "TenantId").Value);
var myUserType = HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Role).Value;
if (myUserType == UserTypes.UdelarAdmin && tenantId == null)
{
return BadRequest(string.Format(ErrorMessages.TenantDoesNotExist, tenantId));
}
if (myUserType == UserTypes.FacultyAdmin)
{
tenantId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "TenantId").Value);
}
var userTypeResult = await _userTypeService.GetById(dto.UserTypeId);
if (userTypeResult.HasError)
{
return BadRequest(userTypeResult.Message);
}
var userType = userTypeResult.Data;
if (myUserType == UserTypes.UdelarAdmin &&
(userType.Name == UserTypes.Student ||
userType.Name == UserTypes.Professor))
{
return BadRequest(string.Format(ErrorMessages.InvalidUserType, userType.Name));
}
if (myUserType == UserTypes.FacultyAdmin &&
(userType.Name == UserTypes.UdelarAdmin ||
userType.Name == UserTypes.FacultyAdmin))
{
return BadRequest(string.Format(ErrorMessages.InvalidUserType, userType.Name));
}
var userServiceResult = await _userService.Create(dto, userType.Name, (int) tenantId);
if (userServiceResult.HasError)
{
BadRequest(userServiceResult.Message);
}
return Ok();
}
[Authorize(Roles = UserTypes.FacultyAdmin + ", " + UserTypes.UdelarAdmin)]
[HttpPut("Modify/{userId}")]
public async Task<IActionResult> Modify(UserModifyDto dto, int userId)
{
var myUserType = HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Role).Value;
var userTypeResult = await _userService.GetUserType(userId);
if (userTypeResult.HasError)
{
return BadRequest(userTypeResult.Message);
}
if (myUserType == UserTypes.FacultyAdmin)
{
var tenantId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "TenantId").Value);
var userTenant = await _userService.GetTenant(userId);
if (userTenant.HasError)
{
return BadRequest(userTenant.Message);
}
if (userTenant.Data != tenantId)
{
return BadRequest("No se puede modificar un usuario de otra facultad");
}
}
var userType = userTypeResult.Data;
if (userType.Name == UserTypes.UdelarAdmin ||
userType.Name == UserTypes.FacultyAdmin)
if (myUserType == UserTypes.UdelarAdmin &&
(userType.Name == UserTypes.Student ||
userType.Name == UserTypes.Professor))
{
return BadRequest(string.Format(ErrorMessages.InvalidUserType, userType.Name));
}
if (myUserType == UserTypes.FacultyAdmin &&
(userType.Name == UserTypes.UdelarAdmin ||
userType.Name == UserTypes.FacultyAdmin))
{
return BadRequest(string.Format(ErrorMessages.InvalidUserType, userType.Name));
}
var userServiceResult = await _userService.Create(dto, userType.Name, tenantId);
var userServiceResult = await _userService.Modify(dto, userType.Name, userId);
if (userServiceResult.HasError)
{
return BadRequest(userServiceResult.Message);
}
if (userServiceResult.Data == false)
{
return NotFound(userServiceResult.Message);
}
return Ok();
}
[Authorize(Roles = UserTypes.UdelarAdmin)]
[HttpPost("RegisterAdmin/{tenantId}")]
public async Task<IActionResult> RegisterAdmin(UserRegisterDto dto, int tenantId)
[Authorize(Roles = UserTypes.FacultyAdmin + ", " + UserTypes.UdelarAdmin)]
[HttpDelete("Delete/{userId}")]
public async Task<IActionResult> Delete(int userId)
{
var userTypeResult = await _userTypeService.GetById(dto.UserTypeId);
var myUserType = HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Role).Value;
if (myUserType == UserTypes.FacultyAdmin)
{
var tenantId = int.Parse(HttpContext.User.Claims.FirstOrDefault(x => x.Type == "TenantId").Value);
var userTenant = await _userService.GetTenant(userId);
if (userTenant.HasError)
{
return BadRequest(userTenant.Message);
}
if (userTenant.Data != tenantId)
{
return BadRequest("No se puede borrar un usuario de otra facultad");
}
}
var userTypeResult = await _userService.GetUserType(userId);
if (userTypeResult.HasError)
{
BadRequest(userTypeResult.Message);
return BadRequest(userTypeResult.Message);
}
var userType = userTypeResult.Data;
if (userType.Name == UserTypes.Student ||
userType.Name == UserTypes.Professor)
if (myUserType == UserTypes.UdelarAdmin &&
(userType.Name == UserTypes.Student ||
userType.Name == UserTypes.Professor))
{
return BadRequest(string.Format(ErrorMessages.InvalidUserType, userType.Name));
}
if (myUserType == UserTypes.FacultyAdmin &&
(userType.Name == UserTypes.UdelarAdmin ||
userType.Name == UserTypes.FacultyAdmin))
{
return BadRequest(string.Format(ErrorMessages.InvalidUserType, userType.Name));
}
var userServiceResult = await _userService.Create(dto, userType.Name, tenantId);
var userServiceResult = await _userService.Delete(userId);
if (userServiceResult.HasError)
{
BadRequest(userServiceResult.Message);
return BadRequest(userServiceResult.Message);
}
if (userServiceResult.Data == false)
{
return NotFound(userServiceResult.Message);
}
return Ok();
}
[Authorize(Roles = UserTypes.Student + ", " + UserTypes.Professor + ", " + UserTypes.FacultyAdmin)]
[HttpGet("GetAll")]
public async Task<IActionResult> GetAll()
Loading