Como faríamos uma restrição de determinada entidade, como por exemplo uma postegem, só pudesse ser editada ou deletada pelo usuário que a criou?
Como faríamos uma restrição de determinada entidade, como por exemplo uma postegem, só pudesse ser editada ou deletada pelo usuário que a criou?
Olá Josias
Para restringir que apenas o usuário que criou uma determinada entidade possa editá-la ou excluí-la, você pode utilizar o recurso de autorização do ASP.NET Identity.
Uma maneira de fazer isso é verificar o ID do usuário logado e compará-lo com o ID do usuário que criou a entidade. Se forem iguais, o usuário tem permissão para editar ou excluir a entidade. Caso contrário, ele será impedido de realizar essas ações.
Aqui está um exemplo de como você pode implementar essa restrição em um controlador de uma API:
[HttpDelete("{id}")]
[Authorize]
public async Task<IActionResult> Delete(int id)
{
var entity = await _context.Entidades.FindAsync(id);
if (entity == null)
{
return NotFound();
}
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
if (entity.UserId != userId)
{
return Forbid();
}
_context.Entidades.Remove(entity);
await _context.SaveChangesAsync();
return NoContent();
}
Nesse exemplo, o método Delete
recebe o ID da entidade a ser excluída. Primeiro, é verificado se a entidade existe. Em seguida, o ID do usuário logado é obtido através do User.FindFirstValue(ClaimTypes.NameIdentifier)
. Por fim, é feita a comparação entre o ID do usuário logado e o ID do usuário que criou a entidade. Se forem diferentes, é retornado um status de proibido (Forbid
). Caso contrário, a entidade é removida do contexto e as mudanças são salvas no banco de dados.
Espero que isso ajude! Se tiver mais alguma dúvida, é só me dizer. Bons estudos!
Espero ter ajudado e bons estudos!