#pragma warning disable CA1506 // TODO: Decomplexify public async Task <IActionResult> Update([FromBody] Api.Models.InstanceUser model, CancellationToken cancellationToken) { var test = StandardModelChecks(model); if (test != null) { return(test); } var originalUser = await DatabaseContext.Instances.Where(x => x.Id == Instance.Id).SelectMany(x => x.InstanceUsers).Where(x => x.UserId == model.UserId).FirstOrDefaultAsync(cancellationToken).ConfigureAwait(false); if (originalUser == null) { return(StatusCode((int)HttpStatusCode.Gone)); } originalUser.ByondRights = model.ByondRights ?? originalUser.ByondRights; originalUser.RepositoryRights = model.RepositoryRights ?? originalUser.RepositoryRights; originalUser.InstanceUserRights = model.InstanceUserRights ?? originalUser.InstanceUserRights; originalUser.ChatBotRights = model.ChatBotRights ?? originalUser.ChatBotRights; originalUser.ConfigurationRights = model.ConfigurationRights ?? originalUser.ConfigurationRights; originalUser.DreamDaemonRights = model.DreamDaemonRights ?? originalUser.DreamDaemonRights; originalUser.DreamMakerRights = model.DreamMakerRights ?? originalUser.DreamMakerRights; await DatabaseContext.Save(cancellationToken).ConfigureAwait(false); return(Json(originalUser.UserId == AuthenticationContext.User.Id || (AuthenticationContext.GetRight(RightsType.InstanceUser) & (ulong)InstanceUserRights.ReadUsers) != 0 ? originalUser.ToApi() : new Api.Models.InstanceUser { UserId = originalUser.UserId })); }
public async Task <IActionResult> Create([FromBody] Api.Models.InstanceUser model, CancellationToken cancellationToken) { var test = StandardModelChecks(model); if (test != null) { return(test); } var dbUser = new Models.InstanceUser { ByondRights = model.ByondRights ?? ByondRights.None, ChatBotRights = model.ChatBotRights ?? ChatBotRights.None, ConfigurationRights = model.ConfigurationRights ?? ConfigurationRights.None, DreamDaemonRights = model.DreamDaemonRights ?? DreamDaemonRights.None, DreamMakerRights = model.DreamMakerRights ?? DreamMakerRights.None, RepositoryRights = model.RepositoryRights ?? RepositoryRights.None, InstanceUserRights = model.InstanceUserRights ?? InstanceUserRights.None, UserId = model.UserId, InstanceId = Instance.Id }; DatabaseContext.InstanceUsers.Add(dbUser); await DatabaseContext.Save(cancellationToken).ConfigureAwait(false); return(StatusCode((int)HttpStatusCode.Created, dbUser.ToApi())); }
/// <summary> /// Checks a <paramref name="model"/> for errors. /// </summary> /// <param name="model">The <see cref="Api.Models.InstanceUser"/> to check</param> /// <returns>The <see cref="IActionResult"/> to take if this is not a new <see cref="Api.Models.InstanceUser"/></returns> IActionResult StandardModelChecks(Api.Models.InstanceUser model) { if (model == null) { throw new ArgumentNullException(nameof(model)); } if (!model.UserId.HasValue) { return(BadRequest(new ErrorMessage(ErrorCode.UserMissingId))); } return(null); }
/// <summary> /// Checks a <paramref name="model"/> for errors /// </summary> /// <param name="model">The <see cref="Api.Models.InstanceUser"/> to check</param> /// <returns>A <see cref="BadRequestResult"/> explaining any errors, <see langword="null"/> if none</returns> BadRequestObjectResult StandardModelChecks(Api.Models.InstanceUser model) { if (model == null) { throw new ArgumentNullException(nameof(model)); } if (!model.UserId.HasValue) { return(BadRequest(new ErrorMessage { Message = "Missing UserId!" })); } return(null); }
public async Task <IActionResult> Create([FromBody] Api.Models.InstanceUser model, CancellationToken cancellationToken) { if (model == null) { throw new ArgumentNullException(nameof(model)); } var userCanonicalName = await DatabaseContext .Users .AsQueryable() .Where(x => x.Id == model.UserId) .Select(x => x.CanonicalName) .FirstOrDefaultAsync(cancellationToken) .ConfigureAwait(false); if (userCanonicalName == default) { return(BadRequest(new ErrorMessage(ErrorCode.ModelValidationFailure))); } if (userCanonicalName == Models.User.CanonicalizeName(Models.User.TgsSystemUserName)) { return(Forbid()); } var dbUser = new Models.InstanceUser { ByondRights = RightsHelper.Clamp(model.ByondRights ?? ByondRights.None), ChatBotRights = RightsHelper.Clamp(model.ChatBotRights ?? ChatBotRights.None), ConfigurationRights = RightsHelper.Clamp(model.ConfigurationRights ?? ConfigurationRights.None), DreamDaemonRights = RightsHelper.Clamp(model.DreamDaemonRights ?? DreamDaemonRights.None), DreamMakerRights = RightsHelper.Clamp(model.DreamMakerRights ?? DreamMakerRights.None), RepositoryRights = RightsHelper.Clamp(model.RepositoryRights ?? RepositoryRights.None), InstanceUserRights = RightsHelper.Clamp(model.InstanceUserRights ?? InstanceUserRights.None), UserId = model.UserId, InstanceId = Instance.Id }; DatabaseContext.InstanceUsers.Add(dbUser); await DatabaseContext.Save(cancellationToken).ConfigureAwait(false); return(Created(dbUser.ToApi())); }
#pragma warning disable CA1506 // TODO: Decomplexify public async Task <IActionResult> Update([FromBody] Api.Models.InstanceUser model, CancellationToken cancellationToken) { if (model == null) { throw new ArgumentNullException(nameof(model)); } var originalUser = await DatabaseContext .Instances .AsQueryable() .Where(x => x.Id == Instance.Id) .SelectMany(x => x.InstanceUsers) .Where(x => x.UserId == model.UserId) .FirstOrDefaultAsync(cancellationToken) .ConfigureAwait(false); if (originalUser == null) { return(Gone()); } originalUser.ByondRights = RightsHelper.Clamp(model.ByondRights ?? originalUser.ByondRights.Value); originalUser.RepositoryRights = RightsHelper.Clamp(model.RepositoryRights ?? originalUser.RepositoryRights.Value); originalUser.InstanceUserRights = RightsHelper.Clamp(model.InstanceUserRights ?? originalUser.InstanceUserRights.Value); originalUser.ChatBotRights = RightsHelper.Clamp(model.ChatBotRights ?? originalUser.ChatBotRights.Value); originalUser.ConfigurationRights = RightsHelper.Clamp(model.ConfigurationRights ?? originalUser.ConfigurationRights.Value); originalUser.DreamDaemonRights = RightsHelper.Clamp(model.DreamDaemonRights ?? originalUser.DreamDaemonRights.Value); originalUser.DreamMakerRights = RightsHelper.Clamp(model.DreamMakerRights ?? originalUser.DreamMakerRights.Value); await DatabaseContext.Save(cancellationToken).ConfigureAwait(false); return(Json(originalUser.UserId == AuthenticationContext.User.Id || (AuthenticationContext.GetRight(RightsType.InstanceUser) & (ulong)InstanceUserRights.ReadUsers) != 0 ? originalUser.ToApi() : new Api.Models.InstanceUser { UserId = originalUser.UserId })); }
public async Task <IActionResult> Create([FromBody] Api.Models.InstanceUser model, CancellationToken cancellationToken) { // Don't check the result as how can a new user have an ID StandardModelChecks(model); var dbUser = new Models.InstanceUser { ByondRights = RightsHelper.Clamp(model.ByondRights ?? ByondRights.None), ChatBotRights = RightsHelper.Clamp(model.ChatBotRights ?? ChatBotRights.None), ConfigurationRights = RightsHelper.Clamp(model.ConfigurationRights ?? ConfigurationRights.None), DreamDaemonRights = RightsHelper.Clamp(model.DreamDaemonRights ?? DreamDaemonRights.None), DreamMakerRights = RightsHelper.Clamp(model.DreamMakerRights ?? DreamMakerRights.None), RepositoryRights = RightsHelper.Clamp(model.RepositoryRights ?? RepositoryRights.None), InstanceUserRights = RightsHelper.Clamp(model.InstanceUserRights ?? InstanceUserRights.None), UserId = model.UserId, InstanceId = Instance.Id }; DatabaseContext.InstanceUsers.Add(dbUser); await DatabaseContext.Save(cancellationToken).ConfigureAwait(false); return(StatusCode((int)HttpStatusCode.Created, dbUser.ToApi())); }