1
resposta

[Dúvida] Apenas para usuário

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?

1 resposta

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!