public async Task <IActionResult> DetachFromOrganizationRightAsync([FromBody] AttachDetachRightRequest attachDetachRightRequest) { var currentUserId = GetCurrentUserId(); try { await organizationManager.DetachFromRightAsync(attachDetachRightRequest, currentUserId); return(Ok()); } catch (ArgumentNullException ane) { logger.LogDebug(ane.Message + "\n" + ane.StackTrace); logger.LogDebug($"Can't find organization {attachDetachRightRequest.OrganizationId} or user {attachDetachRightRequest.UserId}"); return(NotFound("Can't find organization, user or right")); } catch (ArgumentException ae) { logger.LogDebug(ae.Message + "\n" + ae.StackTrace); logger.LogDebug($"Can't detach user {attachDetachRightRequest.UserId} from right {attachDetachRightRequest.Right}"); return(BadRequest("Can't detach from this right")); } catch (MethodAccessException mae) { logger.LogDebug(mae.Message + "\n" + mae.StackTrace); logger.LogDebug($"User {currentUserId} has no rights to edit rights in organization {attachDetachRightRequest.OrganizationId}"); return(Forbid(JwtBearerDefaults.AuthenticationScheme, CookieAuthenticationDefaults.AuthenticationScheme)); } catch (MemberAccessException mae) { logger.LogDebug(mae.Message + "\n" + mae.StackTrace); logger.LogDebug($"User {attachDetachRightRequest.UserId} doesn't have right {attachDetachRightRequest.Right} in organization {attachDetachRightRequest.OrganizationId}"); return(BadRequest("User doesn't have this right in organization")); } catch (Exception ex) { logger.LogDebug(ex.Message + "\n" + ex.StackTrace); return(StatusCode(500)); } }