( application: ApplicationNested, data: Security, )
| 70 | }; |
| 71 | |
| 72 | export const removeSecurityMiddleware = async ( |
| 73 | application: ApplicationNested, |
| 74 | data: Security, |
| 75 | ) => { |
| 76 | const { appName, serverId } = application; |
| 77 | let config: FileConfig; |
| 78 | |
| 79 | if (serverId) { |
| 80 | config = await loadRemoteMiddlewares(serverId); |
| 81 | } else { |
| 82 | config = loadMiddlewares<FileConfig>(); |
| 83 | } |
| 84 | let appConfig: FileConfig; |
| 85 | |
| 86 | if (serverId) { |
| 87 | appConfig = await loadOrCreateConfigRemote(serverId, appName); |
| 88 | } else { |
| 89 | appConfig = loadOrCreateConfig(appName); |
| 90 | } |
| 91 | const middlewareName = `auth-${appName}`; |
| 92 | |
| 93 | if (config.http?.middlewares) { |
| 94 | const currentMiddleware = config.http.middlewares[middlewareName]; |
| 95 | if (isBasicAuthMiddleware(currentMiddleware)) { |
| 96 | const users = currentMiddleware.basicAuth.users; |
| 97 | const filteredUsers = |
| 98 | users?.filter((user) => { |
| 99 | const [username] = user.split(":"); |
| 100 | return username !== data.username; |
| 101 | }) || []; |
| 102 | currentMiddleware.basicAuth.users = filteredUsers; |
| 103 | |
| 104 | if (filteredUsers.length === 0) { |
| 105 | if (config?.http?.middlewares?.[middlewareName]) { |
| 106 | delete config.http.middlewares[middlewareName]; |
| 107 | } |
| 108 | deleteMiddleware(appConfig, middlewareName); |
| 109 | if (serverId) { |
| 110 | await writeTraefikConfigRemote(appConfig, appName, serverId); |
| 111 | } else { |
| 112 | writeTraefikConfig(appConfig, appName); |
| 113 | } |
| 114 | } |
| 115 | } |
| 116 | } |
| 117 | |
| 118 | if (serverId) { |
| 119 | await writeTraefikConfigRemote(config, "middlewares", serverId); |
| 120 | } else { |
| 121 | writeMiddleware(config); |
| 122 | } |
| 123 | }; |
| 124 | |
| 125 | const isBasicAuthMiddleware = ( |
| 126 | middleware: HttpMiddleware | undefined, |
no test coverage detected