From 8e4c7f62fbc0ff35a1937897eaa58cb55fd24f0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Banno-Cloutier?= <leo.banno-cloutier@savoirfairelinux.com> Date: Wed, 21 Jun 2023 16:52:09 -0400 Subject: [PATCH] jams-server: enable cors Change-Id: If030ae85310eef6acefcac994f02340c7ab7f385 --- README.md | 7 +- jams-react-client/src/api.js | 40 +++------ .../CustomUiPreview/CustomUiPreview.js | 12 ++- jams-react-client/src/globalUrls.js | 6 +- jams-react-client/src/index.js | 83 +++++-------------- .../src/views/Blueprint/EditBlueprintUi.js | 18 +--- .../src/views/Blueprint/parsePolicyData.js | 15 ++-- .../src/views/Blueprints/Blueprints.js | 76 ++++++++--------- .../src/views/Groups/EditGroup.js | 10 +-- jams-react-client/src/views/Groups/Groups.js | 10 +-- .../api/admin/group/AddGroupServlet.java | 9 +- .../directory/SearchDirectoryServlet.java | 3 - .../filters/ARequestLoggingFilter.java | 24 ++++++ .../{CorsFilter.java => BCorsFilter.java} | 10 +-- ...InstallFilter.java => CInstallFilter.java} | 4 +- .../{ApiFilter.java => DApiFilter.java} | 2 +- 16 files changed, 150 insertions(+), 179 deletions(-) create mode 100644 jams-server/src/main/java/net/jami/jams/server/servlets/filters/ARequestLoggingFilter.java rename jams-server/src/main/java/net/jami/jams/server/servlets/filters/{CorsFilter.java => BCorsFilter.java} (55%) rename jams-server/src/main/java/net/jami/jams/server/servlets/filters/{InstallFilter.java => CInstallFilter.java} (95%) rename jams-server/src/main/java/net/jami/jams/server/servlets/filters/{ApiFilter.java => DApiFilter.java} (98%) diff --git a/README.md b/README.md index e500bc46..03708ff7 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,7 @@ cp extras/scripts/pre-commit .git/hooks chmod +x .git/hooks/pre-commit ``` -## Development Docker container: +## Development Docker container You can build the docker container using: @@ -73,3 +73,8 @@ To run the docker container (assuming you want to have it on port 8080 locally): ``` docker run -p 8080:8080 --rm jams:latest ``` + +## About jams-server/src/main/java/net/jami/jams/server/filters +The files in the `filters` folder are prefixed "A", "B", "C" and "D" so that the +order of execution of the filters are right (jakarta registers filters in +alphabetical order). diff --git a/jams-react-client/src/api.js b/jams-react-client/src/api.js index a2f3a744..eb57688f 100644 --- a/jams-react-client/src/api.js +++ b/jams-react-client/src/api.js @@ -29,9 +29,7 @@ import { api_path_post_update_user, api_path_get_user_directory_search, api_path_blueprints, -} from "globalUrls"; - -let isSearch = false; +} from "./globalUrls"; export default function configApiCall( api_path, @@ -45,24 +43,24 @@ export default function configApiCall( method: request_type, crossDomain: true, dataType: "json", + headers: {}, }; // pass credentials in the header if (credentials) { - config["headers"] = { - Authorization: - "Basic " + - btoa(credentials["username"] + ":" + credentials["password"]), - }; + const base64 = btoa( + credentials["username"] + ":" + credentials["password"] + ); + config["headers"]["Authorization"] = "Basic " + base64; } - if (window.localStorage.getItem("access_token")) { - const jwt = localStorage.getItem("access_token"); - config["headers"] = { - Authorization: "Bearer " + jwt, - }; + const jwt = localStorage.getItem("access_token"); + if (jwt) { + config["headers"]["Authorization"] = "Bearer " + jwt; } + config["headers"]["Content-type"] = "application/json"; + // pass data in the header if (data) { if ( @@ -74,30 +72,16 @@ export default function configApiCall( api_path === api_path_get_auth_devices || api_path === api_path_get_admin_devices || api_path === api_path_post_configuration_change_password - ) - isSearch = true; - - // search dataType - if (isSearch) { + ) { if (request_type === "GET" || request_type === "DELETE") { config["params"] = data; } else { config["data"] = data; } } else { - config["header"] = { - "Content-type": "application/json", - }; - - if (window.localStorage.getItem("access_token")) { - const jwt = localStorage.getItem("access_token"); - config["headers"]["Authorization"] = "Bearer " + jwt; - } - config["data"] = JSON.stringify(data); } } - isSearch = false; return config; } diff --git a/jams-react-client/src/components/CustomUiPreview/CustomUiPreview.js b/jams-react-client/src/components/CustomUiPreview/CustomUiPreview.js index 7ca6237a..5787f86b 100644 --- a/jams-react-client/src/components/CustomUiPreview/CustomUiPreview.js +++ b/jams-react-client/src/components/CustomUiPreview/CustomUiPreview.js @@ -8,6 +8,8 @@ import logoImage from "assets/img/logo-jami-net.svg"; import TipBox from "./TipBox"; import JamiIdCard from "./JamiIdCard"; import i18next from "i18next"; +import { url_path } from "../../globalUrls"; +import { url_port } from "../../globalUrls"; const styles = { backgroundImage: { @@ -118,7 +120,9 @@ export default function CustomUiPreview({ "Here is your Jami identifier, don’t hesitate to share it in order to be contacted more easily!" ); } - if (!logoUrl) { + if (logoUrl) { + logoUrl = `${url_path}:${url_port}/${logoUrl}`; + } else { logoUrl = logoImage; } @@ -126,6 +130,12 @@ export default function CustomUiPreview({ backgroundColor = "white"; backgroundUrl = ""; } + if (backgroundUrl !== "") { + backgroundColor = "white"; + } + if (backgroundUrl) { + backgroundUrl = `${url_path}:${url_port}/${backgroundUrl}`; + } const isCompactDisplay = !hasTitle && !hasDescription && !hasTips; diff --git a/jams-react-client/src/globalUrls.js b/jams-react-client/src/globalUrls.js index ffae7eff..12efdb95 100644 --- a/jams-react-client/src/globalUrls.js +++ b/jams-react-client/src/globalUrls.js @@ -1,6 +1,10 @@ const uri = ""; const current_uri = window.location.href; -const backend_address = new URL(window.location.href); +const backend_address = new URL( + process.env.NODE_ENV === "development" + ? "http://localhost:8080" + : window.location.href +); const url_path = backend_address.protocol + "//" + backend_address.hostname; const url_port = backend_address.port; const api_path_post_install_admin = "/api/install/start"; diff --git a/jams-react-client/src/index.js b/jams-react-client/src/index.js index d85216a6..28c6f538 100644 --- a/jams-react-client/src/index.js +++ b/jams-react-client/src/index.js @@ -18,7 +18,7 @@ import React, { StrictMode, Suspense } from "react"; import ReactDOM from "react-dom"; import { createBrowserHistory } from "history"; -import { Router, Route, Switch, Redirect } from "react-router-dom"; +import { Router, Switch, Redirect } from "react-router-dom"; import { ProtectedRoute } from "protected.route"; import { ConfiguredRoute } from "configured.route"; import auth from "./auth"; @@ -60,76 +60,39 @@ const theme = createTheme({ }, }); -if (process.env.NODE_ENV === "development") { - auth.checkLastKnownStep(() => { - ReactDOM.render( - <StrictMode> +auth.checkServerInstalled(() => { + auth.checkAdminAccountStatus(() => { + auth.checkLastKnownStep(() => { + ReactDOM.render( <ThemeProvider theme={theme}> <Suspense fallback={<div>Loading...</div>}> <Router history={hist}> <Switch> <ConfiguredRoute path="/signin" component={SignIn} /> - <Route path="/users" component={UsersRoute} /> - <Route path="/user/:username" component={UserRoute} /> - <Route path="/createuser" component={CreateUserRoute} /> - <Route path="/groups" component={GroupsRoute} /> - <Route path="/group/:groupid" component={GroupRoute} /> - <Route path="/blueprints" component={BlueprintsRoute} /> - <Route + <ProtectedRoute path="/users" component={UsersRoute} /> + <ProtectedRoute path="/user/:username" component={UserRoute} /> + <ProtectedRoute + path="/createuser" + component={CreateUserRoute} + /> + <ProtectedRoute path="/groups" component={GroupsRoute} /> + <ProtectedRoute path="/group/:groupid" component={GroupRoute} /> + <ProtectedRoute + path="/blueprints" + component={BlueprintsRoute} + /> + <ProtectedRoute path="/blueprint/:blueprintname" component={BlueprintRoute} /> - <Route path="/settings" component={SettingsRoute} /> + <ProtectedRoute path="/settings" component={SettingsRoute} /> <Redirect from="/" to="/signin" /> </Switch> </Router> </Suspense> - </ThemeProvider> - </StrictMode>, - document.getElementById("root") - ); - }); -} else { - auth.checkServerInstalled(() => { - auth.checkAdminAccountStatus(() => { - auth.checkLastKnownStep(() => { - ReactDOM.render( - <ThemeProvider theme={theme}> - <Suspense fallback={<div>Loading...</div>}> - <Router history={hist}> - <Switch> - <ConfiguredRoute path="/signin" component={SignIn} /> - <ProtectedRoute path="/users" component={UsersRoute} /> - <ProtectedRoute - path="/user/:username" - component={UserRoute} - /> - <ProtectedRoute - path="/createuser" - component={CreateUserRoute} - /> - <ProtectedRoute path="/groups" component={GroupsRoute} /> - <ProtectedRoute - path="/group/:groupid" - component={GroupRoute} - /> - <ProtectedRoute - path="/blueprints" - component={BlueprintsRoute} - /> - <ProtectedRoute - path="/blueprint/:blueprintname" - component={BlueprintRoute} - /> - <ProtectedRoute path="/settings" component={SettingsRoute} /> - <Redirect from="/" to="/signin" /> - </Switch> - </Router> - </Suspense> - </ThemeProvider>, - document.getElementById("root") - ); - }); + </ThemeProvider>, + document.getElementById("root") + ); }); }); -} +}); diff --git a/jams-react-client/src/views/Blueprint/EditBlueprintUi.js b/jams-react-client/src/views/Blueprint/EditBlueprintUi.js index bc11a7e7..ccd33ac7 100644 --- a/jams-react-client/src/views/Blueprint/EditBlueprintUi.js +++ b/jams-react-client/src/views/Blueprint/EditBlueprintUi.js @@ -14,7 +14,7 @@ import GridContainer from "components/Grid/GridContainer.js"; import { hexToRgb, blackColor } from "assets/jss/material-dashboard-react.js"; -import { api_path_get_image, api_path_post_image } from "../../globalUrls"; +import { api_path_get_image, api_path_post_image, url_path, url_port } from "../../globalUrls"; import dashboardStyle from "assets/jss/material-dashboard-react/views/dashboardStyle.js"; @@ -135,20 +135,16 @@ export default function EditBlueprintUi({ blueprintName }) { const formData = new FormData(); formData.append("file", acceptedFiles[0]); - const url = `${api_path_post_image}/${blueprintName}/${imgType}`; + const url = `${url_path}:${url_port}${api_path_post_image}/${blueprintName}/${imgType}`; fetch(url, { method: "POST", body: formData, }) .then(() => { + const newUrl = `${api_path_get_image}/${blueprintName}/${imgType}/${acceptedFiles[0].name}`; + if (imgType === "background") { - let newUrl = - api_path_get_image + - "/" + - blueprintName + - "/background/" + - acceptedFiles[0].name; setUiCustomization({ ...uiCustomization, backgroundUrl: newUrl, @@ -156,12 +152,6 @@ export default function EditBlueprintUi({ blueprintName }) { }); handleUpdateUi("backgroundUrl", newUrl); } else if (imgType === "logo") { - let newUrl = - api_path_get_image + - "/" + - blueprintName + - "/logo/" + - acceptedFiles[0].name; setUiCustomization({ ...uiCustomization, logoUrl: newUrl, diff --git a/jams-react-client/src/views/Blueprint/parsePolicyData.js b/jams-react-client/src/views/Blueprint/parsePolicyData.js index f5da5f55..5c8186a8 100644 --- a/jams-react-client/src/views/Blueprint/parsePolicyData.js +++ b/jams-react-client/src/views/Blueprint/parsePolicyData.js @@ -27,6 +27,15 @@ const getModerators = async (defaultModerators) => { return moderators; }; +const setPermissionsSettings = async (policyData) => { + policyData.blueprintModerators = await getModerators( + policyData.defaultModerators + ); + delete policyData.defaultModerators; + + return policyData; +}; + const setConfigurationSettings = (policyData) => { const { turnEnabled, proxyEnabled } = policyData; @@ -89,11 +98,7 @@ const setCustomizationSettings = (policyData) => { export const parsePolicyData = async (data) => { let policyData = JSON.parse(data); - policyData.blueprintModerators = await getModerators( - policyData.defaultModerators - ); - delete policyData.defaultModerators; - + policyData = await setPermissionsSettings(policyData); policyData = setConfigurationSettings(policyData); policyData = setCustomizationSettings(policyData); diff --git a/jams-react-client/src/views/Blueprints/Blueprints.js b/jams-react-client/src/views/Blueprints/Blueprints.js index dbae9f46..239784f7 100644 --- a/jams-react-client/src/views/Blueprints/Blueprints.js +++ b/jams-react-client/src/views/Blueprints/Blueprints.js @@ -177,6 +177,7 @@ export default function Blueprints() { const handleCreateBlueprint = () => { let defaultPolicyData = { videoEnabled: true, + publicInCalls: false, allowCertFromContact: true, allowCertFromHistory: true, allowCertFromTrusted: true, @@ -249,46 +250,41 @@ export default function Blueprints() { {i18next.t("create_blueprint", "Create blueprint")} </DialogTitle> <DialogContent> - <DialogContentText id="alert-dialog-description"> - <FormControl - className={classes.margin} - size="medium" - error={blueprintNameExits} - > - <InputLabel htmlFor="blueprintName"> - {i18next.t("blueprint_name", "Blueprint name")} - </InputLabel> - <Input - id="blueprintName" - placeholder={i18next.t("blueprint_name", "Blueprint name")} - startAdornment={ - <InputAdornment position="start"> - <AllInbox /> - </InputAdornment> - } - onChange={(e) => { - setBlueprintName(e.target.value); - initCheckBlueprintNameExists(e.target.value); - }} - /> - </FormControl> - {disableCreate && blueprintName.length > 0 && ( - <p> - {i18next.t( - "blueprint_name_already_exists", - "Blueprint name already exists!" - )} - </p> - )} - {disableCreate && blueprintName.length === 0 && ( - <p> - {i18next.t( - "blueprint_name_is_empty", - "Blueprint name is empty" - )} - </p> - )} - </DialogContentText> + <FormControl + className={classes.margin} + size="medium" + error={blueprintNameExits} + > + <InputLabel htmlFor="blueprintName"> + {i18next.t("blueprint_name", "Blueprint name")} + </InputLabel> + <Input + id="blueprintName" + placeholder={i18next.t("blueprint_name", "Blueprint name")} + startAdornment={ + <InputAdornment position="start"> + <AllInbox /> + </InputAdornment> + } + onChange={(e) => { + setBlueprintName(e.target.value); + initCheckBlueprintNameExists(e.target.value); + }} + /> + </FormControl> + {disableCreate && blueprintName.length > 0 && ( + <p> + {i18next.t( + "blueprint_name_already_exists", + "Blueprint name already exists!" + )} + </p> + )} + {disableCreate && blueprintName.length === 0 && ( + <p> + {i18next.t("blueprint_name_is_empty", "Blueprint name is empty")} + </p> + )} </DialogContent> <DialogActions> <Button onClick={handleClose} color="primary"> diff --git a/jams-react-client/src/views/Groups/EditGroup.js b/jams-react-client/src/views/Groups/EditGroup.js index 64c7c1ec..dcbd5fd3 100644 --- a/jams-react-client/src/views/Groups/EditGroup.js +++ b/jams-react-client/src/views/Groups/EditGroup.js @@ -209,11 +209,6 @@ export default function EditGroup(props) { getBlueprintsOptions(blueprints) ); - useEffect(() => { - getGroup(); - searchUsers(); - }, []); - const updateGroup = (blueprintValue) => { let data = { name: newName, @@ -357,6 +352,11 @@ export default function EditGroup(props) { }); }; + useEffect(() => { + getGroup(); + searchUsers(); + }, []); + const tableCellClasses = classnames(classes.tableCell); return ( diff --git a/jams-react-client/src/views/Groups/Groups.js b/jams-react-client/src/views/Groups/Groups.js index a19bb244..0ad1ce74 100644 --- a/jams-react-client/src/views/Groups/Groups.js +++ b/jams-react-client/src/views/Groups/Groups.js @@ -266,18 +266,14 @@ export default function Groups() { axios( configApiCall( - api_path_post_create_group + - "?name=" + - groupName + - "&blueprintName=" + - blueprintName, + api_path_post_create_group, "POST", - null, + { name: groupName, blueprintName }, null ) ) .then((response) => { - console.log("Successfully created " + groupName); + console.log("Successfully created " + groupName); setOpenCreate(false); history.push(`/group/${response.data.id}`); }) diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/AddGroupServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/AddGroupServlet.java index c29f498a..f6fb5be8 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/AddGroupServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/admin/group/AddGroupServlet.java @@ -1,6 +1,8 @@ package net.jami.jams.server.servlets.api.admin.group; import com.google.gson.JsonObject; +import com.google.gson.JsonParser; + import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; @@ -28,8 +30,11 @@ public class AddGroupServlet extends HttpServlet { Group group = new Group(); UUID uuid = UUID.randomUUID(); group.setId(uuid.toString()); - group.setName(req.getParameter("name")); - group.setBlueprint(req.getParameter("blueprintName")); + + JsonObject body = JsonParser.parseReader(req.getReader()).getAsJsonObject(); + group.setName(body.get("name").getAsString()); + group.setBlueprint(body.get("blueprintName").getAsString()); + if (dataStore.getGroupDao().storeObject(group)) { JsonObject data = new JsonObject(); data.addProperty("id", uuid.toString()); diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java index 6fa9151e..cd77d04b 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java @@ -23,7 +23,6 @@ package net.jami.jams.server.servlets.api.auth.directory; import com.jsoniter.JsonIterator; -import com.jsoniter.output.JsonStream; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; @@ -35,9 +34,7 @@ import net.jami.jams.common.authentication.AuthenticationSourceType; import net.jami.jams.common.authmodule.AuthModuleKey; import net.jami.jams.common.dao.StatementElement; import net.jami.jams.common.dao.StatementList; -import net.jami.jams.common.objects.responses.DeviceRegistrationResponse; import net.jami.jams.common.objects.user.*; -import net.jami.jams.server.servlets.api.install.CachedObjects; import org.json.JSONObject; import java.io.IOException; diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/filters/ARequestLoggingFilter.java b/jams-server/src/main/java/net/jami/jams/server/servlets/filters/ARequestLoggingFilter.java new file mode 100644 index 00000000..d3864de8 --- /dev/null +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/filters/ARequestLoggingFilter.java @@ -0,0 +1,24 @@ +package net.jami.jams.server.servlets.filters; + +import java.io.IOException; + +import jakarta.servlet.Filter; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; +import jakarta.servlet.annotation.WebFilter; +import jakarta.servlet.http.HttpServletRequest; +import lombok.extern.slf4j.Slf4j; + +@WebFilter(urlPatterns = { "*" }) +@Slf4j +public class ARequestLoggingFilter implements Filter { + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException { + HttpServletRequest req = ((HttpServletRequest) request); + log.info("Request: {} {}", req.getMethod(), req.getRequestURI()); + chain.doFilter(request, response); + } +} diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/filters/CorsFilter.java b/jams-server/src/main/java/net/jami/jams/server/servlets/filters/BCorsFilter.java similarity index 55% rename from jams-server/src/main/java/net/jami/jams/server/servlets/filters/CorsFilter.java rename to jams-server/src/main/java/net/jami/jams/server/servlets/filters/BCorsFilter.java index 56d5af3a..e8199f0f 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/filters/CorsFilter.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/filters/BCorsFilter.java @@ -1,21 +1,13 @@ package net.jami.jams.server.servlets.filters; -import java.io.IOException; - -import jakarta.servlet.FilterChain; -import jakarta.servlet.ServletException; -import jakarta.servlet.ServletRequest; -import jakarta.servlet.ServletResponse; import jakarta.servlet.annotation.WebFilter; import jakarta.servlet.annotation.WebInitParam; -import jakarta.servlet.http.HttpServletResponse; -// @WebFilter(urlPatterns = { "*" }, initParams = { @WebInitParam(name = "cors.allowed.origins", value = "*") }) @WebFilter(urlPatterns = { "*" }, initParams = { @WebInitParam(name = "cors.allowed.origins", value = "*"), @WebInitParam(name = "cors.allowed.methods", value = "PUT, POST, GET, OPTIONS, DELETE"), @WebInitParam(name = "cors.allowed.headers", value = "Content-Type, Authorization"), @WebInitParam(name = "cors.preflight.maxage", value = "3600") }) -public class CorsFilter extends org.apache.catalina.filters.CorsFilter { +public class BCorsFilter extends org.apache.catalina.filters.CorsFilter { } diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/filters/InstallFilter.java b/jams-server/src/main/java/net/jami/jams/server/servlets/filters/CInstallFilter.java similarity index 95% rename from jams-server/src/main/java/net/jami/jams/server/servlets/filters/InstallFilter.java rename to jams-server/src/main/java/net/jami/jams/server/servlets/filters/CInstallFilter.java index 3d57e902..72b567c6 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/filters/InstallFilter.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/filters/CInstallFilter.java @@ -38,9 +38,9 @@ import java.io.IOException; import static net.jami.jams.server.servlets.filters.FilterUtils.doAuthCheck; -@WebFilter("/api/install/*") +@WebFilter(filterName = "installFilter", urlPatterns = { "/api/install/*" }) @Slf4j -public class InstallFilter implements Filter { +public class CInstallFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/filters/ApiFilter.java b/jams-server/src/main/java/net/jami/jams/server/servlets/filters/DApiFilter.java similarity index 98% rename from jams-server/src/main/java/net/jami/jams/server/servlets/filters/ApiFilter.java rename to jams-server/src/main/java/net/jami/jams/server/servlets/filters/DApiFilter.java index 6adbcb27..d9c31fc6 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/filters/ApiFilter.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/filters/DApiFilter.java @@ -45,7 +45,7 @@ import static net.jami.jams.server.servlets.filters.FilterUtils.doAuthCheck; */ @WebFilter(urlPatterns = {"/api/auth/*","/api/admin/*"}) @Slf4j -public class ApiFilter implements Filter { +public class DApiFilter implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { -- GitLab