10 |
11 |
14 |
15 | |
16 | 17 | ${emailTitle} 18 | | 19 |
${emailIntro}
25 | 26 | 27 | 28 |${emailError}
29 | 30 |${emailLinkHelp}
31 | 32 |${emailSupport}
33 |
37 | ${emailTeam}
38 |
10 |
11 |
14 |
15 |
16 | |
17 | 18 | ${messageTitle} 19 | | 20 |
27 | ${messageBody} 28 |
29 | 30 |
31 | The WiseMapping Team
32 |
${doNotReplay}
37 | 38 | -------------------------------------------------------------------------------- /doc/spam/map-1940594.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Speedpro Signs Vernon", 4 | "isLockedBy": null, 5 | "creatorFullName": "- -", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "speedprovernon@hyperdrivemail.com", 9 | "creationTime": "2025-08-20T17:19:40Z", 10 | "lastModificationBy": "- -", 11 | "lastModificationTime": "2025-08-29T23:03:55Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/security/MapPermissionsSecurityAdvice.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright [2007-2025] [wisemapping] 3 | * 4 | * Licensed under WiseMapping Public License, Version 1.0 (the "License"). 5 | * It is basically the Apache License, Version 2.0 (the "License") plus the 6 | * "powered by wisemapping" text requirement on every single page; 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the license at 9 | * 10 | * https://github.com/wisemapping/wisemapping-open-source/blob/main/LICENSE.md 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | package com.wisemapping.security; 20 | 21 | import com.wisemapping.model.Mindmap; 22 | import com.wisemapping.model.Account; 23 | import com.wisemapping.service.MindmapService; 24 | import org.jetbrains.annotations.Nullable; 25 | import org.springframework.beans.factory.annotation.Autowired; 26 | 27 | public abstract class MapPermissionsSecurityAdvice { 28 | @Autowired private MindmapService mindmapService; 29 | 30 | protected abstract boolean isAllowed(@Nullable Account user, Mindmap map); 31 | 32 | protected abstract boolean isAllowed(@Nullable Account user, int mapId); 33 | 34 | protected MindmapService getMindmapService() { 35 | return mindmapService; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /doc/spam/map-1921412.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Golden Palm Resort","isLockedBy":null,"creatorFullName":"Jonathan Moses","role":"none","description":null,"createdBy":"goldenpalmresortuk@gmail.com","creationTime":"2025-06-25T09:13:15Z","lastModificationBy":"Jonathan Moses","lastModificationTime":"2025-06-25T09:17:31Z","xml":"","public":true} -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/validator/ValidatorUtils.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright [2007-2025] [wisemapping] 3 | * 4 | * Licensed under WiseMapping Public License, Version 1.0 (the "License"). 5 | * It is basically the Apache License, Version 2.0 (the "License") plus the 6 | * "powered by wisemapping" text requirement on every single page; 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the license at 9 | * 10 | * https://github.com/wisemapping/wisemapping-open-source/blob/main/LICENSE.md 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | package com.wisemapping.validator; 20 | 21 | import org.springframework.validation.ValidationUtils; 22 | 23 | public class ValidatorUtils 24 | extends ValidationUtils 25 | { 26 | public static void rejectIfExceeded(org.springframework.validation.Errors errors, 27 | java.lang.String title, 28 | java.lang.String message, 29 | String value, 30 | int limit) 31 | { 32 | if (value != null && value.length() > limit) { 33 | errors.rejectValue(title, "field.max.length",message); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /doc/spam/map-1912233.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Fitness Experience", 4 | "isLockedBy": null, 5 | "creatorFullName": "Nicholas Dunn", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "fitnessexperiencecalgary@hyperdrivemail.com", 9 | "creationTime": "2025-05-29T05:40:46Z", 10 | "lastModificationBy": "Nicholas Dunn", 11 | "lastModificationTime": "2025-05-29T05:41:46Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /doc/spam/map-1934656.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Speedpro Signs Guelph","isLockedBy":null,"creatorFullName":"Speedpro Signs","role":"none","description":null,"createdBy":"speedproguelph@hyperdrivemail.com","creationTime":"2025-07-31T10:26:55Z","lastModificationBy":"Speedpro Signs","lastModificationTime":"2025-07-31T10:27:38Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1922153.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "A1 Diesel Ltd.", 4 | "isLockedBy": null, 5 | "creatorFullName": "Aldis Ozols", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "a1dieselltd@gmail.com", 9 | "creationTime": "2025-06-27T07:34:48Z", 10 | "lastModificationBy": "Aldis Ozols", 11 | "lastModificationTime": "2025-06-27T07:35:17Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /doc/spam/map-1923339.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Fitness Experience", 4 | "isLockedBy": null, 5 | "creatorFullName": "Nicholas Dunn", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "fitnessexperienceregina@hyperdrivemail.com", 9 | "creationTime": "2025-07-02T03:15:00Z", 10 | "lastModificationBy": "Nicholas Dunn", 11 | "lastModificationTime": "2025-07-02T03:20:01Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/validator/Messages.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright [2007-2025] [wisemapping] 3 | * 4 | * Licensed under WiseMapping Public License, Version 1.0 (the "License"). 5 | * It is basically the Apache License, Version 2.0 (the "License") plus the 6 | * "powered by wisemapping" text requirement on every single page; 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the license at 9 | * 10 | * https://github.com/wisemapping/wisemapping-open-source/blob/main/LICENSE.md 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | package com.wisemapping.validator; 20 | 21 | public interface Messages { 22 | String EMAIL_ALREADY_EXIST = "EMAIL_ALREADY_EXIST"; 23 | String NO_VALID_EMAIL_ADDRESS = "NO_VALID_EMAIL_ADDRESS"; 24 | String FIELD_REQUIRED = "FIELD_REQUIRED"; 25 | String MAP_TITLE_ALREADY_EXISTS = "MAP_TITLE_ALREADY_EXISTS"; 26 | String LABEL_TITLE_ALREADY_EXISTS = "LABEL_TITLE_ALREADY_EXISTS"; 27 | 28 | String CAPTCHA_LOADING_ERROR = "CAPTCHA_LOADING_ERROR"; 29 | 30 | String CAPTCHA_TIMEOUT_OUT_DUPLICATE = "CAPTCHA_TIMEOUT_OUT_DUPLICATE"; 31 | String CAPTCHA_INVALID_INPUT_RESPONSE = "CAPTCHA_INVALID_INPUT_RESPONSE"; 32 | 33 | String DISPOSABLE_EMAIL_NOT_ALLOWED = "DISPOSABLE_EMAIL_NOT_ALLOWED"; 34 | } 35 | -------------------------------------------------------------------------------- /doc/spam/map-1788921.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Globe Moving & Storage Ltd","isLockedBy":null,"creatorFullName":"Colby Kiss","role":"none","description":null,"createdBy":"globemoving@hyperdrivemail.com","creationTime":"2024-09-26T07:53:59Z","lastModificationBy":"Colby Kiss","lastModificationTime":"2024-09-26T08:00:04Z","xml":"","public":true} -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/security/ReadSecurityAdvise.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright [2007-2025] [wisemapping] 3 | * 4 | * Licensed under WiseMapping Public License, Version 1.0 (the "License"). 5 | * It is basically the Apache License, Version 2.0 (the "License") plus the 6 | * "powered by wisemapping" text requirement on every single page; 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the license at 9 | * 10 | * https://github.com/wisemapping/wisemapping-open-source/blob/main/LICENSE.md 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | package com.wisemapping.security; 20 | 21 | import com.wisemapping.model.CollaborationRole; 22 | import com.wisemapping.model.Mindmap; 23 | import com.wisemapping.model.Account; 24 | import org.jetbrains.annotations.Nullable; 25 | import org.springframework.stereotype.Component; 26 | 27 | @Component 28 | public class ReadSecurityAdvise 29 | extends MapPermissionsSecurityAdvice { 30 | 31 | protected boolean isAllowed(@Nullable Account user, Mindmap map) { 32 | return getMindmapService().hasPermissions(user, map, CollaborationRole.VIEWER); 33 | } 34 | 35 | protected boolean isAllowed(@Nullable Account user, int mapId) { 36 | return getMindmapService().hasPermissions(user, mapId, CollaborationRole.VIEWER); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /doc/spam/map-1931070.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Extreme Escape - Colonnade", 4 | "isLockedBy": null, 5 | "creatorFullName": "Alex Amaro", 6 | "role": "none", 7 | "description": "Extreme Escape provides several of the most effective escape the room games in Texas. We've spent plenty of hours developing an experience that absolutely immerses you in the world of the game. Interactive Rooms Created by Industry Veterans. ", 8 | "createdBy": "extremeescapetx@gmail.com", 9 | "creationTime": "2025-07-23T05:52:07Z", 10 | "lastModificationBy": "Alex Amaro", 11 | "lastModificationTime": "2025-07-23T10:39:11Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /doc/spam/map-1879348.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Advanced Canine Development","isLockedBy":null,"creatorFullName":"Mark Foreman","role":"none","description":null,"createdBy":"advancedcaninedev@gmail.com","creationTime":"2025-03-18T07:04:14Z","lastModificationBy":"Mark Foreman","lastModificationTime":"2025-03-18T07:07:06Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1856390.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"A1 Pest Solutions Inc","isLockedBy":null,"creatorFullName":"Martin Nienhuis","role":"none","description":null,"createdBy":"a1pestsolutions@hyperdrivemail.com","creationTime":"2025-02-05T11:09:58Z","lastModificationBy":"Martin Nienhuis","lastModificationTime":"2025-02-05T11:10:39Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1909519.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Welcome -", 4 | "isLockedBy": null, 5 | "creatorFullName": "- -", 6 | "role": "none", 7 | "description": "", 8 | "createdBy": "speedprocalgary@hyperdrivemail.com", 9 | "creationTime": "2025-05-22T11:28:04Z", 10 | "lastModificationBy": "- -", 11 | "lastModificationTime": "2025-05-22T11:31:54Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/WrongAuthenticationTypeException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright [2007-2025] [wisemapping] 3 | * 4 | * Licensed under WiseMapping Public License, Version 1.0 (the "License"). 5 | * It is basically the Apache License, Version 2.0 (the "License") plus the 6 | * "powered by wisemapping" text requirement on every single page; 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the license at 9 | * 10 | * https://github.com/wisemapping/wisemapping-open-source/blob/main/LICENSE.md 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | package com.wisemapping.exceptions; 20 | 21 | import com.wisemapping.model.Account; 22 | import com.wisemapping.model.AuthenticationType; 23 | import org.jetbrains.annotations.NotNull; 24 | import org.springframework.security.core.AuthenticationException; 25 | 26 | public class WrongAuthenticationTypeException extends AuthenticationException { 27 | private final Account user; 28 | 29 | public WrongAuthenticationTypeException(@NotNull Account user, @NotNull String debugMessage) { 30 | super(debugMessage); 31 | this.user = user; 32 | } 33 | 34 | public AuthenticationType getAuthenticationType() { 35 | return user.getAuthenticationType(); 36 | } 37 | 38 | public Account getUser() { 39 | return user; 40 | } 41 | } 42 | 43 | -------------------------------------------------------------------------------- /wise-api/src/main/resources/mail/newCollaboration.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 |
10 |
11 |
14 |
15 |
16 | |
17 | 18 | ${emailTitle} 19 | | 20 |
${emailMessageFrom}
27 |${message}
28 | #end
29 | ${emailClickToOpen}
30 | 31 |${emailAccountInfo}
32 |
36 | ${emailTeam}
37 |
${doNotReplay}
39 | 40 | -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/model/SuspensionReason.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright [2007-2025] [wisemapping] 3 | * 4 | * Licensed under WiseMapping Public License, Version 1.0 (the "License"). 5 | * It is basically the Apache License, Version 2.0 (the "License") plus the 6 | * "powered by wisemapping" text requirement on every single page; 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the license at 9 | * 10 | * https://github.com/wisemapping/wisemapping-open-source/blob/main/LICENSE.md 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | package com.wisemapping.model; 20 | 21 | public enum SuspensionReason { 22 | ABUSE("A"), 23 | TERMS_VIOLATION("T"), 24 | SECURITY_CONCERN("S"), 25 | MANUAL_REVIEW("M"), 26 | INACTIVITY("I"), 27 | OTHER("O"); 28 | 29 | private final String code; 30 | 31 | SuspensionReason(String code) { 32 | this.code = code; 33 | } 34 | 35 | public String getCode() { 36 | return code; 37 | } 38 | 39 | public static SuspensionReason fromCode(String code) { 40 | for (SuspensionReason reason : values()) { 41 | if (reason.code.equals(code)) { 42 | return reason; 43 | } 44 | } 45 | throw new IllegalArgumentException("Invalid suspension reason code: " + code); 46 | } 47 | } -------------------------------------------------------------------------------- /doc/spam/map-1840561.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Welcome Ken","isLockedBy":null,"creatorFullName":"Ken Coughlin","role":"none","description":"","createdBy":"nationwestregent@hyperdrivemail.com","creationTime":"2025-01-09T05:12:37Z","lastModificationBy":"Ken Coughlin","lastModificationTime":"2025-01-09T05:16:34Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1921102.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Kirby Cuttings Garden Services","isLockedBy":null,"creatorFullName":"Callum Kirby","role":"none","description":null,"createdBy":"kirbycuttings@outlook.com","creationTime":"2025-06-24T11:47:43Z","lastModificationBy":"Callum Kirby","lastModificationTime":"2025-06-24T11:48:21Z","xml":"","public":true} -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/SessionExpiredException.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright [2007-2025] [wisemapping] 3 | * 4 | * Licensed under WiseMapping Public License, Version 1.0 (the "License"). 5 | * It is basically the Apache License, Version 2.0 (the "License") plus the 6 | * "powered by wisemapping" text requirement on every single page; 7 | * you may not use this file except in compliance with the License. 8 | * You may obtain a copy of the license at 9 | * 10 | * https://github.com/wisemapping/wisemapping-open-source/blob/main/LICENSE.md 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an "AS IS" BASIS, 14 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | */ 18 | 19 | package com.wisemapping.exceptions; 20 | 21 | import com.wisemapping.model.Account; 22 | import org.jetbrains.annotations.NotNull; 23 | 24 | public class SessionExpiredException 25 | extends ClientException { 26 | private static final String MSG_KEY = "MINDMAP_TIMESTAMP_OUTDATED"; 27 | private final Account lastUpdater; 28 | 29 | public SessionExpiredException(@NotNull String debugInfo, @NotNull Account lastUpdater) { 30 | super(debugInfo, Severity.FATAL); 31 | this.lastUpdater = lastUpdater; 32 | } 33 | 34 | @NotNull 35 | @Override 36 | protected String getMsgBundleKey() { 37 | return MSG_KEY; 38 | } 39 | 40 | @Override 41 | protected Object[] getMsgBundleArgs() { 42 | return new String[]{lastUpdater.getFullName() + "<" + lastUpdater.getEmail() + ">"}; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /doc/spam/map-1923143.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Speedpro Signs St. Catharines","isLockedBy":null,"creatorFullName":"Speedpro Signs","role":"none","description":null,"createdBy":"speedprost-catharines@hyperdrivemail.com","creationTime":"2025-07-01T09:01:44Z","lastModificationBy":"Speedpro Signs","lastModificationTime":"2025-07-01T09:02:31Z","xml":"","public":true} -------------------------------------------------------------------------------- /qodana.yaml: -------------------------------------------------------------------------------- 1 | #-------------------------------------------------------------------------------# 2 | # Qodana analysis is configured by qodana.yaml file # 3 | # https://www.jetbrains.com/help/qodana/qodana-yaml.html # 4 | #-------------------------------------------------------------------------------# 5 | version: "1.0" 6 | 7 | #Specify inspection profile for code analysis 8 | profile: 9 | name: qodana.starter 10 | 11 | #Enable inspections 12 | #include: 13 | # - name: