public async Task <IActionResult> CreateItem([FromBody] GuildConfigForCreateDto guildConfigForCreateDto, [FromQuery] bool importExistingBans = false) { await RequireSiteAdmin(); try { GuildConfig alreadyRegistered = await GetRegisteredGuild(guildConfigForCreateDto.GuildId); if (alreadyRegistered != null) { throw new GuildAlreadyRegisteredException(guildConfigForCreateDto.GuildId); } } catch (ResourceNotFoundException) { } catch (UnregisteredGuildException) { } GuildConfig guildConfig = new() { GuildId = guildConfigForCreateDto.GuildId, ModRoles = guildConfigForCreateDto.ModRoles, AdminRoles = guildConfigForCreateDto.AdminRoles, ModNotificationDM = guildConfigForCreateDto.ModNotificationDM, MutedRoles = guildConfigForCreateDto.MutedRoles, ModPublicNotificationWebhook = guildConfigForCreateDto.ModPublicNotificationWebhook, ModInternalNotificationWebhook = guildConfigForCreateDto.ModInternalNotificationWebhook, StrictModPermissionCheck = guildConfigForCreateDto.StrictModPermissionCheck, ExecuteWhoisOnJoin = guildConfigForCreateDto.ExecuteWhoisOnJoin, PublishModeratorInfo = guildConfigForCreateDto.PublishModeratorInfo, PreferredLanguage = guildConfigForCreateDto?.PreferredLanguage ?? _config.GetDefaultLanguage() }; guildConfig = await GuildConfigRepository.CreateDefault(_serviceProvider).CreateGuildConfig(guildConfig, importExistingBans); return(StatusCode(201, guildConfig)); }
public async Task <IActionResult> CreateItem([FromBody] GuildConfigForCreateDto guildConfigForCreateDto) { // check if request is made by a site admin logger.LogInformation($"{HttpContext.Request.Method} {HttpContext.Request.Path} | Incoming request."); Identity currentIdentity = await identityManager.GetIdentity(HttpContext); User currentUser = await currentIdentity.GetCurrentDiscordUser(); if (currentUser == null) { logger.LogInformation($"{HttpContext.Request.Method} {HttpContext.Request.Path} | 401 Unauthorized."); return(Unauthorized()); } if (!config.Value.SiteAdminDiscordUserIds.Contains(currentUser.Id)) { logger.LogInformation($"{HttpContext.Request.Method} {HttpContext.Request.Path} | 401 User unauthorized."); return(Unauthorized()); } // ======================================================== GuildConfig alreadyExists = await database.SelectSpecificGuildConfig(guildConfigForCreateDto.GuildId); if (alreadyExists != null) { logger.LogInformation($"{HttpContext.Request.Method} {HttpContext.Request.Path} | 400 Guild is already registered."); return(BadRequest("Guild is already registered.")); } Guild guild = await discord.FetchGuildInfo(guildConfigForCreateDto.GuildId); if (guild == null) { logger.LogInformation($"{HttpContext.Request.Method} {HttpContext.Request.Path} | 400 Guild not found."); return(BadRequest("Guild not found.")); } if (guild.Roles.FindIndex(x => x.Id == guildConfigForCreateDto.ModRoleId) < 0 || guild.Roles.FindIndex(x => x.Id == guildConfigForCreateDto.AdminRoleId) < 0) { logger.LogInformation($"{HttpContext.Request.Method} {HttpContext.Request.Path} | 400 Roles not found."); return(BadRequest("Roles not found.")); } GuildConfig guildConfig = new GuildConfig(); guildConfig.GuildId = guildConfigForCreateDto.GuildId; guildConfig.ModRoleId = guildConfigForCreateDto.ModRoleId; guildConfig.AdminRoleId = guildConfigForCreateDto.AdminRoleId; guildConfig.ModNotificationDM = guildConfigForCreateDto.ModNotificationDM; guildConfig.MutedRoleId = guildConfigForCreateDto.MutedRoleId; guildConfig.ModPublicNotificationWebhook = guildConfigForCreateDto.ModPublicNotificationWebhook; guildConfig.ModInternalNotificationWebhook = guildConfigForCreateDto.ModInternalNotificationWebhook; await database.SaveGuildConfig(guildConfig); await database.SaveChangesAsync(); logger.LogInformation($"{HttpContext.Request.Method} {HttpContext.Request.Path} | 201 Resource created."); return(StatusCode(201)); }