public async Task <IActionResult> Update([FromBody] ModuleUpdate moduleUpdate, CancellationToken cancellationToken) { if (moduleUpdate == null) { throw new ArgumentNullException(nameof(moduleUpdate)); } var token = await gitHubManager.CheckAuthorization(Request.Cookies, cancellationToken).ConfigureAwait(false); if (token == null) { return(Unauthorized()); } var user = await gitHubManager.GetUserLogin(token, cancellationToken).ConfigureAwait(false); if (!await gitHubManager.UserHasWriteAccess(user).ConfigureAwait(false)) { return(Forbid()); } try { await moduleManager.SetModuleEnabled(new Guid(moduleUpdate.Uid), moduleUpdate.Enabled, cancellationToken).ConfigureAwait(false); } catch (Exception e) { logger.LogWarning(e, "Failed to set module {0} enabled to {1}!", moduleUpdate.Uid, moduleUpdate.Enabled); return(NotFound()); } return(Ok()); }
public async Task <IActionResult> Update([FromBody] ModuleUpdate moduleUpdate, CancellationToken cancellationToken) { if (moduleUpdate == null) { throw new ArgumentNullException(nameof(moduleUpdate)); } logger.LogTrace("Begin module update operation: {0} => {1}", moduleUpdate.Uid, moduleUpdate.Enabled); var token = await gitHubManager.CheckAuthorization(Request.Cookies, cancellationToken).ConfigureAwait(false); if (token == null) { logger.LogDebug("Module update aborted, user unauthorized!"); return(Unauthorized()); } var user = await gitHubManager.GetUserLogin(token, cancellationToken).ConfigureAwait(false); if (!await gitHubManager.UserHasWriteAccess(user).ConfigureAwait(false)) { logger.LogDebug("Module update aborted, user is not maintainer!"); return(Forbid()); } try { logger.LogInformation("User {0} setting enabled status of module {1} to {2}", user.Login, moduleUpdate.Uid, moduleUpdate.Enabled); await moduleManager.SetModuleEnabled(new Guid(moduleUpdate.Uid), moduleUpdate.Enabled, cancellationToken).ConfigureAwait(false); } catch (Exception e) { logger.LogWarning(e, "Failed to set module {0} enabled to {1}!", moduleUpdate.Uid, moduleUpdate.Enabled); return(NotFound()); } return(Ok()); }