├── .gitmessage ├── wise-api ├── 6.6-mysql.sql └── src │ ├── main │ ├── resources │ │ ├── messages.properties │ │ ├── Bundle.properties │ │ ├── public │ │ │ └── images │ │ │ │ ├── logo-icon.png │ │ │ │ ├── logo-small.png │ │ │ │ ├── minus.svg │ │ │ │ ├── add.svg │ │ │ │ └── center_focus.svg │ │ ├── banner.txt │ │ ├── data-mysql.sql │ │ ├── data-postgresql.sql │ │ ├── data-hsqldb.sql │ │ ├── newrelic-extensions.xml │ │ ├── mail │ │ │ ├── confirmationMail.vm │ │ │ ├── baseLayout.vm │ │ │ └── newCollaboration.vm │ │ └── spam-keywords.properties │ └── java │ │ └── com │ │ └── wisemapping │ │ ├── security │ │ ├── MapAccessPermission.java │ │ ├── MapPermissionsSecurityAdvice.java │ │ └── ReadSecurityAdvise.java │ │ ├── rest │ │ ├── model │ │ │ ├── RestResetPasswordAction.java │ │ │ ├── RestResetPasswordResponse.java │ │ │ └── RestLabelList.java │ │ └── JsonHttpMessageNotReadableException.java │ │ ├── exceptions │ │ ├── OAuthAuthenticationException.java │ │ ├── Severity.java │ │ ├── WiseMappingException.java │ │ ├── AccountSuspendedException.java │ │ ├── AccountDisabledException.java │ │ ├── LabelCouldNotFoundException.java │ │ ├── ValidationException.java │ │ ├── EditionSessionExpiredException.java │ │ ├── MapCouldNotFoundException.java │ │ ├── UserRegistrationException.java │ │ ├── MapNotPublicSecurityException.java │ │ ├── InvalidActivationCodeException.java │ │ ├── PasswordTooShortException.java │ │ ├── AccountAlreadyActivatedException.java │ │ ├── InvalidEmailException.java │ │ ├── PasswordTooLongException.java │ │ ├── OwnerCannotChangeException.java │ │ ├── EmailNotExistsException.java │ │ ├── WrongAuthenticationTypeException.java │ │ ├── SessionExpiredException.java │ │ ├── PasswordChangeNotAllowedException.java │ │ └── LockException.java │ │ ├── config │ │ └── common │ │ │ └── JPAConfig.java │ │ ├── dao │ │ └── LabelManager.java │ │ ├── model │ │ ├── InactiveUserResult.java │ │ ├── CollaborationRole.java │ │ ├── Constants.java │ │ ├── CollaborationEmail.java │ │ ├── SuspensionReason.java │ │ └── SpamStrategyTypeConverter.java │ │ ├── Application.java │ │ ├── service │ │ ├── InvalidAuthSchemaException.java │ │ ├── InvalidUserEmailException.java │ │ ├── RegistrationException.java │ │ ├── CollaborationException.java │ │ ├── HistoryCleanupHandler.java │ │ ├── spam │ │ │ └── SpamDetectionStrategy.java │ │ ├── LabelService.java │ │ └── LockManager.java │ │ ├── util │ │ └── TimeUtils.java │ │ └── validator │ │ ├── ValidatorUtils.java │ │ └── Messages.java │ └── test │ └── resources │ ├── mockito-extensions │ └── org.mockito.plugins.MockMaker │ ├── xml-samples │ ├── sample3.wxml │ └── sample4.wxml │ └── logback-test.xml ├── test-file.txt ├── doc ├── spam │ ├── spam_analysis_results.json │ ├── download_summary.json │ ├── map-1884075.json │ ├── map-1804233.json │ ├── map-1910128.json │ ├── map-1811747.json │ ├── map-1925259.json │ ├── map-1793404.json │ ├── map-1893021.json │ ├── map-1926336.json │ ├── map-1908145.json │ ├── map-1933041.json │ ├── map-1920892.json │ ├── map-1919660.json │ ├── map-1927492.json │ ├── map-1828122.json │ ├── map-1926351.json │ ├── map-1842138.json │ ├── map-1924763.json │ ├── map-1886837.json │ ├── map-1940708.json │ ├── map-1924052.json │ ├── map-1937416.json │ ├── map-1858693.json │ ├── map-1841477.json │ ├── map-1941832.json │ ├── map-1837957.json │ ├── map-1839953.json │ ├── map-1912183.json │ ├── map-1925679.json │ ├── map-1800920.json │ ├── map-1848180.json │ ├── map-1924625.json │ ├── map-1799281.json │ ├── map-1925484.json │ ├── map-1935317.json │ ├── map-1828461.json │ ├── map-1928716.json │ ├── map-1929429.json │ ├── map-1889339.json │ ├── map-1909478.json │ ├── map-1912210.json │ ├── map-1943823.json │ ├── map-1858501.json │ ├── map-1880847.json │ ├── map-1901495.json │ ├── map-1929256.json │ ├── map-1978726.json │ ├── map-1979542.json │ ├── map-1931573.json │ ├── map-1925629.json │ ├── map-1911897.json │ ├── map-1897411.json │ ├── map-1858673.json │ ├── map-1921918.json │ ├── map-1829537.json │ ├── map-1868063.json │ ├── map-1889373.json │ ├── map-1919615.json │ ├── map-1919366.json │ ├── map-1919559.json │ ├── map-1936562.json │ ├── map-1946633.json │ ├── map-1921311.json │ ├── map-1940825.json │ ├── map-1940594.json │ ├── map-1921412.json │ ├── map-1912233.json │ ├── map-1934656.json │ ├── map-1922153.json │ ├── map-1923339.json │ ├── map-1788921.json │ ├── map-1931070.json │ ├── map-1879348.json │ ├── map-1856390.json │ ├── map-1909519.json │ ├── map-1840561.json │ ├── map-1921102.json │ ├── map-1923143.json │ ├── map-1902545.json │ ├── map-1940345.json │ ├── map-1933705.json │ └── map-1943830.json └── non-spam │ ├── README.md │ └── map-1400591.json ├── .vscode └── settings.json ├── distribution ├── app-postgresql │ ├── .gitignore │ ├── .env │ ├── app.yml │ └── .env.example ├── app │ ├── .dockerignore │ └── supervisord.conf └── api │ └── Dockerfile ├── .gitignore ├── .github └── workflows │ ├── docker-api-publish.yml │ └── docker-app-publish.yml └── qodana.yaml /.gitmessage: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /wise-api/6.6-mysql.sql: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test-file.txt: -------------------------------------------------------------------------------- 1 | # Test commit 2 | -------------------------------------------------------------------------------- /doc/spam/spam_analysis_results.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /wise-api/src/main/resources/messages.properties: -------------------------------------------------------------------------------- 1 | messages_en.properties -------------------------------------------------------------------------------- /wise-api/src/main/resources/Bundle.properties: -------------------------------------------------------------------------------- 1 | # Solves error Can't find bundle for base name jakarta.xml.bind.Messages, locale en_US -------------------------------------------------------------------------------- /wise-api/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker: -------------------------------------------------------------------------------- 1 | org.mockito.internal.creation.bytebuddy.ByteBuddyMockMaker 2 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "java.compile.nullAnalysis.mode": "automatic", 3 | "java.configuration.updateBuildConfiguration": "automatic" 4 | } -------------------------------------------------------------------------------- /wise-api/src/main/resources/public/images/logo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wisemapping/wisemapping-open-source/HEAD/wise-api/src/main/resources/public/images/logo-icon.png -------------------------------------------------------------------------------- /wise-api/src/main/resources/public/images/logo-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wisemapping/wisemapping-open-source/HEAD/wise-api/src/main/resources/public/images/logo-small.png -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/security/MapAccessPermission.java: -------------------------------------------------------------------------------- 1 | package com.wisemapping.security; 2 | 3 | public enum MapAccessPermission { 4 | READ, 5 | WRITE 6 | } 7 | -------------------------------------------------------------------------------- /distribution/app-postgresql/.gitignore: -------------------------------------------------------------------------------- 1 | # Data directory (if stored locally in ./data) 2 | data/ 3 | 4 | # Backup files 5 | *.sql 6 | *.dump 7 | backup-*/ 8 | 9 | # Logs 10 | *.log 11 | 12 | -------------------------------------------------------------------------------- /wise-api/src/main/resources/public/images/minus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/rest/model/RestResetPasswordAction.java: -------------------------------------------------------------------------------- 1 | package com.wisemapping.rest.model; 2 | 3 | public enum RestResetPasswordAction { 4 | 5 | EMAIL_SENT, OAUTH2_USER 6 | 7 | } 8 | -------------------------------------------------------------------------------- /wise-api/src/main/resources/public/images/add.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /distribution/app/.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore unnecessary files to speed up build 2 | **/node_modules 3 | **/target 4 | **/dist 5 | **/.git 6 | **/.gitignore 7 | **/.DS_Store 8 | **/*.log 9 | **/.env 10 | **/.vscode 11 | **/.idea 12 | **/coverage 13 | **/.cache 14 | 15 | -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/rest/model/RestResetPasswordResponse.java: -------------------------------------------------------------------------------- 1 | package com.wisemapping.rest.model; 2 | 3 | public class RestResetPasswordResponse { 4 | 5 | RestResetPasswordAction action; 6 | 7 | public RestResetPasswordAction getAction() { 8 | return action; 9 | } 10 | 11 | public void setAction(RestResetPasswordAction action) { 12 | this.action = action; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | */target 2 | */*.iml 3 | wisemapping.ipr 4 | wisemapping.iws 5 | wisemapping.iml 6 | wisemapping.ids 7 | wise-webapp/wisemapping.log* 8 | wise-webapp/velocity.log 9 | wisemapping.log* 10 | */.DS_Store 11 | .DS_Store 12 | target 13 | .idea 14 | wise-webapp/src/main/webapp/react/* 15 | 16 | # IDE and AI tools 17 | .vscode 18 | .claude 19 | .cursor 20 | 21 | # Build and test artifacts 22 | coverage/ 23 | test-output/ 24 | *.class 25 | -------------------------------------------------------------------------------- /wise-api/src/main/resources/public/images/center_focus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /doc/spam/download_summary.json: -------------------------------------------------------------------------------- 1 | { 2 | "downloaded": [ 3 | 1841477, 4 | 1902545, 5 | 1936562, 6 | 1804233, 7 | 1901495, 8 | 1924052 9 | ], 10 | "rate_limited": [], 11 | "failed": [ 12 | [ 13 | 1854919, 14 | "HTTP 422" 15 | ], 16 | [ 17 | 1388292, 18 | "HTTP 403" 19 | ], 20 | [ 21 | 1553987, 22 | "HTTP 403" 23 | ], 24 | [ 25 | 1961176, 26 | "HTTP 403" 27 | ] 28 | ], 29 | "total": 10 30 | } -------------------------------------------------------------------------------- /wise-api/src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | | | |' |\ /| ' /\ |~~\~|~ 2 | | | ||(~/~/| \/ |/~~\|~~\|~~\||/~\ /~~| /__\ |__/ | 3 | | \/ \/ |_)\/_| |\__||__/|__/|| |\__| / \| _|_ 4 | | | \__| 5 | WiseMapping API ${build.version:6.0.1-SNAPSHOT} 6 | Build: ${build.build.number:dev} | Date: ${build.build.timestamp:dev} 7 | Git: ${git.branch:develop} (${git.commit.id.abbrev:unknown}) 8 | Powered by Spring Boot ${spring-boot.version} 9 | -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/OAuthAuthenticationException.java: -------------------------------------------------------------------------------- 1 | package com.wisemapping.exceptions; 2 | 3 | import jakarta.validation.constraints.NotNull; 4 | 5 | public class OAuthAuthenticationException extends WiseMappingException { 6 | 7 | public OAuthAuthenticationException(@NotNull String message) { 8 | super(message); 9 | } 10 | 11 | public OAuthAuthenticationException(@NotNull String message, @NotNull Throwable cause) { 12 | super(message, cause); 13 | } 14 | } -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/config/common/JPAConfig.java: -------------------------------------------------------------------------------- 1 | package com.wisemapping.config.common; 2 | 3 | import com.wisemapping.dao.MindmapManagerImpl; 4 | import com.wisemapping.model.Account; 5 | import com.wisemapping.service.MindmapServiceImpl; 6 | import org.springframework.boot.autoconfigure.domain.EntityScan; 7 | import org.springframework.context.annotation.Configuration; 8 | import org.springframework.data.jpa.repository.config.EnableJpaRepositories; 9 | 10 | 11 | @Configuration 12 | @EnableJpaRepositories(basePackageClasses={MindmapServiceImpl.class, MindmapManagerImpl.class}) 13 | @EntityScan(basePackageClasses= Account.class) 14 | public class JPAConfig { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /doc/spam/map-1884075.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "iFix New York - Bay Ridge", 4 | "isLockedBy": null, 5 | "creatorFullName": "Elisa Nunez null", 6 | "role": "none", 7 | "description": "iFix New York - Bay Ridge", 8 | "createdBy": "elisanunez503@gmail.com", 9 | "creationTime": "2025-03-26T10:59:33Z", 10 | "lastModificationBy": "Elisa Nunez null", 11 | "lastModificationTime": "2025-03-26T10:59:57Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /doc/spam/map-1804233.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Primary Care Doctor", 4 | "isLockedBy": null, 5 | "creatorFullName": "Primary Care Doctor", 6 | "role": "none", 7 | "description": "Primary Care Doctor", 8 | "createdBy": "Primarycaredoctor722@gmail.com", 9 | "creationTime": "2024-10-21T11:07:32Z", 10 | "lastModificationBy": "Primary Care Doctor", 11 | "lastModificationTime": "2024-10-21T11:07:47Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /wise-api/src/main/resources/data-mysql.sql: -------------------------------------------------------------------------------- 1 | INSERT IGNORE INTO COLLABORATOR (id, email, creation_date) VALUES (1, 'test@wisemapping.org', CURRENT_DATE()); 2 | INSERT IGNORE INTO ACCOUNT (collaborator_id, firstname, lastname, password, activation_code, activation_date, allow_send_email,authentication_type) 3 | VALUES (1, 'Test', 'User', 'ENC:5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8', 1237, CURRENT_DATE(), 1,'D'); 4 | 5 | INSERT IGNORE INTO COLLABORATOR (id, email, creation_date) VALUES (2, 'admin@wisemapping.org', CURRENT_DATE()); 6 | INSERT IGNORE INTO ACCOUNT (collaborator_id, firstname, lastname, password, activation_code, activation_date, allow_send_email,authentication_type) 7 | VALUES (2, 'Admin', 'User', 'ENC:6c69d1e41a95462be1ff01decc9c4d4022c6a082', 1237, CURRENT_DATE(), 1,'D'); 8 | -------------------------------------------------------------------------------- /distribution/app-postgresql/.env: -------------------------------------------------------------------------------- 1 | # ======================================== 2 | # REQUIRED: Storage Path 3 | # ======================================== 4 | # Absolute path where PostgreSQL data will be stored 5 | # Replace this with your actual storage path 6 | WISEMAPPING_DATA_DIR=./data 7 | 8 | # ======================================== 9 | # PostgreSQL Configuration 10 | # ======================================== 11 | POSTGRES_DB=wisemapping 12 | POSTGRES_USER=wisemapping 13 | POSTGRES_PASSWORD=password 14 | 15 | # ======================================== 16 | # Application Ports 17 | # ======================================== 18 | WISEMAPPING_PORT=80 19 | POSTGRES_PORT=5432 20 | 21 | # ======================================== 22 | # Java Options 23 | # ======================================== 24 | JAVA_OPTS=-Xmx2048m -Xms1024m 25 | -------------------------------------------------------------------------------- /wise-api/src/test/resources/xml-samples/sample3.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /doc/spam/map-1910128.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Evolution AV","isLockedBy":null,"creatorFullName":"Graham McMillan","role":"none","description":null,"createdBy":"evolutionavalberta@gmail.com","creationTime":"2025-05-23T18:43:35Z","lastModificationBy":"Graham McMillan","lastModificationTime":"2025-05-23T18:55:10Z","xml":"","public":true} -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/dao/LabelManager.java: -------------------------------------------------------------------------------- 1 | package com.wisemapping.dao; 2 | 3 | import com.wisemapping.model.MindmapLabel; 4 | import com.wisemapping.model.Account; 5 | import org.jetbrains.annotations.NotNull; 6 | import org.jetbrains.annotations.Nullable; 7 | 8 | import java.util.List; 9 | 10 | public interface LabelManager { 11 | 12 | void addLabel(@NotNull final MindmapLabel label); 13 | 14 | void saveLabel(@NotNull final MindmapLabel label); 15 | 16 | @NotNull 17 | List getAllLabels(@NotNull final Account user); 18 | 19 | @Nullable 20 | MindmapLabel getLabelById(int id, @NotNull final Account user); 21 | 22 | @Nullable 23 | MindmapLabel getLabelByTitle(@NotNull final String title, @NotNull final Account user); 24 | 25 | void removeLabel(@NotNull final MindmapLabel label); 26 | } 27 | -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/model/InactiveUserResult.java: -------------------------------------------------------------------------------- 1 | package com.wisemapping.model; 2 | 3 | import java.util.Calendar; 4 | 5 | /** 6 | * Result class for inactive user queries with activity information 7 | */ 8 | public class InactiveUserResult { 9 | private final Account user; 10 | private final Calendar lastLogin; 11 | private final Calendar lastActivity; 12 | 13 | public InactiveUserResult(Account user, Calendar lastLogin, Calendar lastActivity) { 14 | this.user = user; 15 | this.lastLogin = lastLogin; 16 | this.lastActivity = lastActivity; 17 | } 18 | 19 | public Account getUser() { 20 | return user; 21 | } 22 | 23 | public Calendar getLastLogin() { 24 | return lastLogin; 25 | } 26 | 27 | public Calendar getLastActivity() { 28 | return lastActivity; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/Application.java: -------------------------------------------------------------------------------- 1 | package com.wisemapping; 2 | 3 | import com.wisemapping.config.AppConfig; 4 | import org.springframework.boot.WebApplicationType; 5 | import org.springframework.boot.builder.SpringApplicationBuilder; 6 | import org.springframework.context.annotation.Bean; 7 | import org.springframework.security.web.firewall.StrictHttpFirewall; 8 | 9 | public class Application { 10 | 11 | public static void main(String[] args) { 12 | new SpringApplicationBuilder() 13 | .sources(AppConfig.class) 14 | .web(WebApplicationType.SERVLET) 15 | .run(args); 16 | } 17 | 18 | @Bean 19 | public StrictHttpFirewall httpFirewall() { 20 | StrictHttpFirewall firewall = new StrictHttpFirewall(); 21 | firewall.setAllowSemicolon(true); 22 | return firewall; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /wise-api/src/test/resources/xml-samples/sample4.wxml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | -------------------------------------------------------------------------------- /distribution/app-postgresql/app.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | datasource: 3 | url: jdbc:postgresql://postgresql:5432/wisemapping 4 | username: wisemapping 5 | password: password 6 | driver-class-name: org.postgresql.Driver 7 | type: com.zaxxer.hikari.HikariDataSource 8 | hikari: 9 | data-source-properties: 10 | prepareThreshold: 0 11 | # PostgreSQL uses prepared statements by default, prepareThreshold=0 12 | # means always use prepared statements (cached automatically) 13 | jpa: 14 | hibernate: 15 | ddl-auto: validate 16 | properties: 17 | hibernate: 18 | dialect: org.hibernate.dialect.PostgreSQLDialect 19 | sql: 20 | init: 21 | platform: postgresql 22 | mode: always 23 | schema-locations: classpath:schema-postgresql.sql 24 | data-locations: classpath:data-postgresql.sql 25 | continue-on-error: false 26 | 27 | -------------------------------------------------------------------------------- /wise-api/src/test/resources/logback-test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | %d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX} %5p --- [%15.15t] %-40.40logger{39} : %m%n 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /distribution/app/supervisord.conf: -------------------------------------------------------------------------------- 1 | [supervisord] 2 | nodaemon=true 3 | user=root 4 | logfile=/var/log/supervisor/supervisord.log 5 | pidfile=/var/run/supervisord.pid 6 | 7 | [program:spring-boot] 8 | command=/bin/sh -c "java ${JAVA_OPTS} -Dspring.config.additional-location=optional:file:/app/config/ -jar /app/wisemapping-api.jar" 9 | user=wisemapping 10 | autostart=true 11 | autorestart=true 12 | startretries=10 13 | stdout_logfile=/dev/stdout 14 | stdout_logfile_maxbytes=0 15 | stderr_logfile=/dev/stderr 16 | stderr_logfile_maxbytes=0 17 | environment=JAVA_OPTS="" 18 | # Wait for Spring Boot to fully start before starting Nginx 19 | startsecs=10 20 | 21 | [program:nginx] 22 | command=/usr/sbin/nginx -g 'daemon off;' 23 | user=root 24 | autostart=true 25 | autorestart=true 26 | stdout_logfile=/dev/stdout 27 | stdout_logfile_maxbytes=0 28 | stderr_logfile=/dev/stderr 29 | stderr_logfile_maxbytes=0 30 | # Start after Spring Boot has had time to initialize 31 | priority=20 32 | 33 | -------------------------------------------------------------------------------- /doc/spam/map-1811747.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Straight Flush Plumbing","isLockedBy":null,"creatorFullName":"Straight Flush","role":"none","description":null,"createdBy":"straightflushwellingtonnz@outlook.com","creationTime":"2024-11-05T05:00:36Z","lastModificationBy":"Straight Flush","lastModificationTime":"2024-11-05T05:01:29Z","xml":"","public":true} -------------------------------------------------------------------------------- /wise-api/src/main/resources/data-postgresql.sql: -------------------------------------------------------------------------------- 1 | 2 | INSERT INTO COLLABORATOR (email, creation_date) 3 | VALUES ('test@wisemapping.org', CURRENT_DATE) 4 | ON CONFLICT DO NOTHING; 5 | 6 | INSERT INTO ACCOUNT (collaborator_id, firstname, lastname, password, activation_code, activation_date, allow_send_email, authentication_type) 7 | SELECT id, 'Test', 'User', 'ENC:5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8', 1237, CURRENT_DATE, true, 'D' 8 | FROM COLLABORATOR WHERE email = 'test@wisemapping.org' 9 | ON CONFLICT DO NOTHING; 10 | 11 | INSERT INTO COLLABORATOR (email, creation_date) 12 | VALUES ('admin@wisemapping.org', CURRENT_DATE) 13 | ON CONFLICT DO NOTHING; 14 | 15 | INSERT INTO ACCOUNT (collaborator_id, firstname, lastname, password, activation_code, activation_date, allow_send_email, authentication_type) 16 | SELECT id, 'Admin', 'User', 'ENC:6c69d1e41a95462be1ff01decc9c4d4022c6a082', 1237, CURRENT_DATE, true, 'D' 17 | FROM COLLABORATOR WHERE email = 'admin@wisemapping.org' 18 | ON CONFLICT DO NOTHING; 19 | 20 | -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/Severity.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 | package com.wisemapping.exceptions; 19 | 20 | public enum Severity { 21 | INFO, 22 | WARNING, 23 | SEVERE, 24 | FATAL 25 | } 26 | -------------------------------------------------------------------------------- /wise-api/src/main/resources/data-hsqldb.sql: -------------------------------------------------------------------------------- 1 | SET DATABASE SQL SYNTAX MYS TRUE; 2 | -- Configure HSQLDB to be case sensitive for unquoted identifiers 3 | SET DATABASE SQL NAMES FALSE; 4 | SET DATABASE SQL REGULAR NAMES FALSE; 5 | 6 | -- Initialize test users - INSERT IGNORE ensures idempotency 7 | INSERT IGNORE INTO COLLABORATOR (id, email, creation_date) VALUES (1, 'test@wisemapping.org', CURDATE()); 8 | INSERT IGNORE INTO ACCOUNT (collaborator_id, firstname, lastname, password, activation_code, activation_date, allow_send_email, authentication_type, suspended) 9 | VALUES (1, 'Test', 'User', 'ENC:5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8', 1237, CURDATE(), TRUE, 'D', FALSE); 10 | 11 | INSERT IGNORE INTO COLLABORATOR (id, email, creation_date) VALUES (2, 'admin@wisemapping.org', CURDATE()); 12 | INSERT IGNORE INTO ACCOUNT (collaborator_id, firstname, lastname, password, activation_code, activation_date, allow_send_email, authentication_type, suspended) 13 | VALUES (2, 'Admin', 'User', 'ENC:6c69d1e41a95462be1ff01decc9c4d4022c6a082', 1237, CURDATE(), TRUE, 'D', FALSE); -------------------------------------------------------------------------------- /doc/spam/map-1925259.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Results Medical Aesthetics & Wellness","isLockedBy":null,"creatorFullName":"Laura Bilbruck","role":"none","description":null,"createdBy":"resultsmedtulsa@outlook.com","creationTime":"2025-07-07T11:30:02Z","lastModificationBy":"Laura Bilbruck","lastModificationTime":"2025-07-07T11:30:24Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1793404.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"J. Sweat Plastic Surgery","isLockedBy":null,"creatorFullName":"Jeffrey Sweat","role":"none","description":null,"createdBy":"sacramentosurgeon@gmail.com","creationTime":"2024-10-03T11:38:44Z","lastModificationBy":"Jeffrey Sweat","lastModificationTime":"2024-10-03T11:39:28Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1893021.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Heartland Plastic & Hand Surgery","isLockedBy":null,"creatorFullName":"David Deisher","role":"none","description":null,"createdBy":"heartlandplasticmo@gmail.com","creationTime":"2025-04-14T06:05:50Z","lastModificationBy":"David Deisher","lastModificationTime":"2025-04-14T06:06:33Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1926336.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"K Plastic Surgery","isLockedBy":null,"creatorFullName":"Sanjiv Kayastha","role":"none","description":null,"createdBy":"kplasticsurgeryny@gmail.com","creationTime":"2025-07-10T02:39:05Z","lastModificationBy":"Sanjiv Kayastha","lastModificationTime":"2025-07-13T02:06:49Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1908145.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Cold Turkey Vape Shop","isLockedBy":null,"creatorFullName":"Daniel Lofchick","role":"none","description":null,"createdBy":"coldturkey@hyperdrivemail.com","creationTime":"2025-05-20T01:49:06Z","lastModificationBy":"Daniel Lofchick","lastModificationTime":"2025-05-20T01:49:43Z","xml":"","public":true} -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/model/CollaborationRole.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 CollaborationRole { 22 | OWNER, EDITOR, VIEWER; 23 | 24 | public String getLabel(){ 25 | return this.name().toLowerCase(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /doc/spam/map-1933041.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"The Morris Estate","isLockedBy":null,"creatorFullName":"The Morris Estate","role":"none","description":null,"createdBy":"themorrisestate@outlook.com","creationTime":"2025-07-28T05:01:11Z","lastModificationBy":"The Morris Estate","lastModificationTime":"2025-07-28T05:03:47Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1920892.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Doctors Implants","isLockedBy":null,"creatorFullName":"Doctors Implants","role":"none","description":null,"createdBy":"doctorsimplantscharleston@hyperdrivemail.com","creationTime":"2025-06-24T04:14:04Z","lastModificationBy":"Doctors Implants","lastModificationTime":"2025-06-24T04:21:50Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1919660.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Powertec Electric Inc. - Winnipeg Electricians","isLockedBy":null,"creatorFullName":"Daniel Lacovetsky","role":"none","description":null,"createdBy":"powertec@hyperdrivemail.com","creationTime":"2025-06-20T01:56:00Z","lastModificationBy":"Daniel Lacovetsky","lastModificationTime":"2025-06-20T01:56:38Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/non-spam/README.md: -------------------------------------------------------------------------------- 1 | # Non-Spam Regression Fixtures 2 | 3 | This directory contains real-world or representative public maps that should *not* be flagged by the spam-detection heuristics. 4 | 5 | ## Contents 6 | 7 | - `map-1704774.json` – Curated list of links to high-authority platforms (Google, Wikipedia, GitHub, etc.). Previously triggered the link-farm heuristic; now serves as a regression test to prevent false positives when maps aggregate widely trusted destinations. 8 | - `map-1400591.json` – Activity-focused design sprint breakdown containing no outbound links. Ensures content-rich, process-oriented maps without external URLs are never misclassified as spam. 9 | - `map-1972915.json` – Educational mindmap about branches of philosophy ("Ramas de la Filosofía") with rich HTML content in notes. Contains extensive HTML formatting with nested elements, data attributes, and complex structures from AI-generated content. Previously triggered HTML content spam detection due to high HTML element count; serves as a regression test to prevent false positives for legitimate educational content with rich formatting. 10 | 11 | Use these payloads in tests to ensure legitimate, content-rich maps remain accessible. 12 | -------------------------------------------------------------------------------- /doc/spam/map-1927492.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Arizona Facial Plastics","isLockedBy":null,"creatorFullName":"Farhan Taghizadeh","role":"none","description":null,"createdBy":"arizonafacialplasticsaz@outlook.com","creationTime":"2025-07-13T03:52:23Z","lastModificationBy":"Farhan Taghizadeh","lastModificationTime":"2025-07-13T03:53:01Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1828122.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"New Jersey Spine Institute","isLockedBy":null,"creatorFullName":"New Jersey","role":"none","description":"New Jersey Spine Institute","createdBy":"njspine@hyperdrivemail.com","creationTime":"2024-12-07T05:53:56Z","lastModificationBy":"New Jersey","lastModificationTime":"2024-12-09T12:00:32Z","xml":"","public":true} -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/rest/model/RestLabelList.java: -------------------------------------------------------------------------------- 1 | package com.wisemapping.rest.model; 2 | 3 | import com.fasterxml.jackson.annotation.JsonAutoDetect; 4 | import com.wisemapping.model.MindmapLabel; 5 | import org.jetbrains.annotations.NotNull; 6 | 7 | import jakarta.xml.bind.annotation.XmlElement; 8 | import java.util.ArrayList; 9 | import java.util.List; 10 | 11 | @JsonAutoDetect( 12 | fieldVisibility = JsonAutoDetect.Visibility.NONE, 13 | getterVisibility = JsonAutoDetect.Visibility.PUBLIC_ONLY, 14 | isGetterVisibility = JsonAutoDetect.Visibility.PUBLIC_ONLY) 15 | public class RestLabelList { 16 | 17 | @NotNull private final List restLabels; 18 | 19 | public RestLabelList(){ 20 | this.restLabels = new ArrayList<>(); 21 | } 22 | 23 | public RestLabelList(@NotNull final List labels) { 24 | this.restLabels = new ArrayList<>(labels.size()); 25 | for (MindmapLabel label : labels) { 26 | this.restLabels.add(new RestLabel(label)); 27 | } 28 | } 29 | 30 | @NotNull @XmlElement(name = "label") 31 | public List getLabels() { 32 | return restLabels; 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /doc/spam/map-1926351.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Hearing Doctors of New Jersey", 4 | "isLockedBy": null, 5 | "creatorFullName": "Rhee Rosenman-Nesson", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "hearingdoctorsofnj@gmail.com", 9 | "creationTime": "2025-07-10T03:43:56Z", 10 | "lastModificationBy": "Rhee Rosenman-Nesson", 11 | "lastModificationTime": "2025-07-10T03:52:30Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/service/InvalidAuthSchemaException.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.service; 20 | 21 | import com.wisemapping.exceptions.WiseMappingException; 22 | 23 | public class InvalidAuthSchemaException extends WiseMappingException 24 | { 25 | public InvalidAuthSchemaException(String msg) 26 | { 27 | super(msg); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/service/InvalidUserEmailException.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.service; 20 | 21 | import com.wisemapping.exceptions.WiseMappingException; 22 | 23 | public class InvalidUserEmailException extends WiseMappingException 24 | { 25 | public InvalidUserEmailException(String msg) 26 | { 27 | super(msg); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /doc/spam/map-1842138.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Fennell, Yoxthimer, and Associates, DDS, Inc.","isLockedBy":null,"creatorFullName":"Nathan Fennell","role":"none","description":null,"createdBy":"fyasmilenorwood@outlook.com","creationTime":"2025-01-13T04:36:55Z","lastModificationBy":"Nathan Fennell","lastModificationTime":"2025-01-13T04:38:22Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1924763.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Center for Dermatology & Aesthetic Medicine", 4 | "isLockedBy": null, 5 | "creatorFullName": "Faiyaaz Kalimullah", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "chicagodermmd@outlook.com", 9 | "creationTime": "2025-07-05T05:07:57Z", 10 | "lastModificationBy": "Faiyaaz Kalimullah", 11 | "lastModificationTime": "2025-07-05T05:09:19Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/service/RegistrationException.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 | package com.wisemapping.service; 19 | 20 | import org.springframework.validation.BindException; 21 | 22 | public class RegistrationException extends BindException { 23 | public RegistrationException(Object target, String objectName) { 24 | super(target, objectName); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /doc/spam/map-1886837.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Unframed Digital","isLockedBy":null,"creatorFullName":"Maggie Swift","role":"none","description":null,"createdBy":"unframeddigital@gmail.com","creationTime":"2025-04-01T01:24:13Z","lastModificationBy":"Maggie Swift","lastModificationTime":"2025-04-07T09:33:44Z","xml":"","public":true} -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/service/CollaborationException.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.service; 20 | 21 | import com.wisemapping.exceptions.WiseMappingException; 22 | 23 | public class CollaborationException 24 | extends WiseMappingException 25 | { 26 | public CollaborationException(String msg) 27 | { 28 | super(msg); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /doc/spam/map-1940708.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Extreme Escape - Stone Oak","isLockedBy":null,"creatorFullName":"Alex Amaro","role":"none","description":null,"createdBy":"extremeescapesstoneoak@gmail.com","creationTime":"2025-08-21T05:56:02Z","lastModificationBy":"Alex Amaro","lastModificationTime":"2025-08-21T05:57:07Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1924052.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "DoughGirl", 4 | "isLockedBy": null, 5 | "creatorFullName": "Stuart Colclough", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "doughgirluk@gmail.com", 9 | "creationTime": "2025-07-03T12:11:52Z", 10 | "lastModificationBy": "Stuart Colclough", 11 | "lastModificationTime": "2025-07-03T12:12:44Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/WiseMappingException.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 | public class WiseMappingException 22 | extends Exception 23 | { 24 | public WiseMappingException(String str) 25 | { 26 | super(str); 27 | } 28 | public WiseMappingException(String str,Throwable e) 29 | { 30 | super(str); 31 | initCause(e); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /doc/spam/map-1937416.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Murray Service Company","isLockedBy":null,"creatorFullName":"Joshua Murray","role":"none","description":null,"createdBy":"murrayserviceco@gmail.com","creationTime":"2025-08-11T00:48:31Z","lastModificationBy":"Joshua Murray","lastModificationTime":"2025-08-11T00:49:42Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1858693.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Welcome Balraj","isLockedBy":null,"creatorFullName":"Balraj Bhathal","role":"none","description":"","createdBy":"speedprosurrey@hyperdrivemail.com","creationTime":"2025-02-09T13:35:14Z","lastModificationBy":"Balraj Bhathal","lastModificationTime":"2025-02-09T13:45:21Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1841477.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Welcome Ben", 4 | "isLockedBy": null, 5 | "creatorFullName": "Ben Garcia", 6 | "role": "none", 7 | "description": "", 8 | "createdBy": "madesplumbingtexas@gmail.com", 9 | "creationTime": "2025-01-10T13:11:11Z", 10 | "lastModificationBy": "Ben Garcia", 11 | "lastModificationTime": "2025-01-10T13:17:28Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /doc/spam/map-1941832.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Blair Wellness Group | A Professional Psychological Corporat","isLockedBy":null,"creatorFullName":"Cassidy Blair","role":"none","description":null,"createdBy":"blairwellnessgroupirvine@gmail.com","creationTime":"2025-08-25T09:15:07Z","lastModificationBy":"Cassidy Blair","lastModificationTime":"2025-08-25T09:15:56Z","xml":"","public":true} -------------------------------------------------------------------------------- /.github/workflows/docker-api-publish.yml: -------------------------------------------------------------------------------- 1 | name: Docker API Publish 2 | 3 | on: 4 | workflow_call: 5 | inputs: 6 | tag: 7 | required: true 8 | type: string 9 | 10 | jobs: 11 | docker-api-publish: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v4 15 | 16 | - name: Download build artifacts 17 | uses: actions/download-artifact@v4 18 | with: 19 | name: jar-artifact 20 | path: wise-api/target/ 21 | 22 | - name: Log in to DigitalOcean Container Registry 23 | uses: docker/login-action@v3 24 | with: 25 | registry: registry.digitalocean.com 26 | username: doctl 27 | password: ${{ secrets.DOCR_ACCESS_TOKEN }} 28 | 29 | - name: Build the Docker image 30 | run: docker buildx build --platform linux/amd64 --build-arg ENABLE_NEWRELIC=true -t wisemapping/wisemapping-api:${{ inputs.tag }} -f distribution/api/Dockerfile . 31 | 32 | - name: Tag Docker image 33 | run: docker tag wisemapping/wisemapping-api:${{ inputs.tag }} registry.digitalocean.com/wise-registry/wisemapping/wisemapping-api:${{ inputs.tag }} 34 | 35 | - name: Push Image to Repo 36 | run: docker push registry.digitalocean.com/wise-registry/wisemapping/wisemapping-api:${{ inputs.tag }} -------------------------------------------------------------------------------- /doc/spam/map-1837957.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Castelblanco Law Group, APLC - San Bernardino","isLockedBy":null,"creatorFullName":"Eric Castelblanco","role":"none","description":null,"createdBy":"castelblancoca@outlook.com","creationTime":"2025-01-03T01:57:28Z","lastModificationBy":"Eric Castelblanco","lastModificationTime":"2025-01-05T00:42:10Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1839953.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"C. Buhler & Associates Ltd. - Licensed Insolvency Trustee","isLockedBy":null,"creatorFullName":"Crystal Buhler","role":"none","description":null,"createdBy":"debtfreenorthwinnipeg@hyperdrivemail.com","creationTime":"2025-01-08T03:51:58Z","lastModificationBy":"Crystal Buhler","lastModificationTime":"2025-08-21T08:51:45Z","xml":"","public":true} -------------------------------------------------------------------------------- /.github/workflows/docker-app-publish.yml: -------------------------------------------------------------------------------- 1 | name: Docker App Publish 2 | 3 | on: 4 | workflow_call: 5 | inputs: 6 | tag: 7 | required: true 8 | type: string 9 | frontend_branch: 10 | required: false 11 | type: string 12 | default: "main" 13 | 14 | jobs: 15 | docker-app-publish: 16 | runs-on: ubuntu-latest 17 | steps: 18 | - uses: actions/checkout@v4 19 | 20 | - name: Download build artifacts 21 | uses: actions/download-artifact@v4 22 | with: 23 | name: jar-artifact 24 | path: wise-api/target/ 25 | 26 | - name: Log in to Docker Hub 27 | uses: docker/login-action@v3 28 | with: 29 | username: ${{ secrets.DOCKERHUB_USERNAME }} 30 | password: ${{ secrets.DOCKERHUB_TOKEN }} 31 | 32 | - name: Build the Full Stack Docker image 33 | run: | 34 | docker buildx build \ 35 | --platform linux/amd64 \ 36 | --build-arg FRONTEND_BRANCH=${{ inputs.frontend_branch }} \ 37 | --build-arg CACHEBUST=$(date +%s) \ 38 | -t wisemapping/wisemapping:${{ inputs.tag }} \ 39 | -f distribution/app/Dockerfile . 40 | 41 | - name: Push Image to Docker Hub 42 | run: docker push wisemapping/wisemapping:${{ inputs.tag }} 43 | -------------------------------------------------------------------------------- /distribution/api/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM eclipse-temurin:24-jre-alpine 2 | LABEL maintainer="Paulo Gustavo Veiga " 3 | 4 | # Build argument to optionally download New Relic 5 | ARG ENABLE_NEWRELIC=false 6 | 7 | # Create non-root user for security 8 | RUN addgroup -g 1001 -S wisemapping && \ 9 | adduser -S -u 1001 -G wisemapping wisemapping 10 | 11 | VOLUME /tmp 12 | COPY --chown=wisemapping:wisemapping distribution/api/env-config.sh /app/config-gen.sh 13 | COPY --chown=wisemapping:wisemapping wise-api/target/wisemapping-api.jar /app/wisemapping-api.jar 14 | RUN chmod +x /app/config-gen.sh 15 | 16 | # Create app directory and conditionally download New Relic agent 17 | RUN mkdir -p /app && \ 18 | if [ "$ENABLE_NEWRELIC" = "true" ]; then \ 19 | apk add --no-cache curl && \ 20 | curl -o /app/newrelic.jar https://download.newrelic.com/newrelic/java-agent/newrelic-agent/current/newrelic.jar && \ 21 | chown wisemapping:wisemapping /app/newrelic.jar && \ 22 | apk del curl; \ 23 | fi 24 | 25 | WORKDIR /app 26 | USER wisemapping 27 | 28 | ENV JAVA_OPTS="-XX:InitialRAMPercentage=60 -XX:MaxRAMPercentage=60" 29 | 30 | ENTRYPOINT ["sh", "-c", "/app/config-gen.sh && java ${JAVA_OPTS} ${NEW_RELIC_OPTS} -Dspring.config.additional-location=optional:file:/app/config/ -jar wisemapping-api.jar"] -------------------------------------------------------------------------------- /doc/spam/map-1912183.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Done Right Landscaping","isLockedBy":null,"creatorFullName":"Ray Montes","role":"none","description":null,"createdBy":"donerightlandscapingsa@outlook.com","creationTime":"2025-05-29T01:28:45Z","lastModificationBy":"Ray Montes","lastModificationTime":"2025-05-29T01:30:13Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1925679.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Ginsberg Eye Ophthalmology - Naples", 4 | "isLockedBy": null, 5 | "creatorFullName": "BARRETT ROSS GINSBERG", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "ginsbergeyefl@outlook.com", 9 | "creationTime": "2025-07-08T10:13:36Z", 10 | "lastModificationBy": "BARRETT ROSS GINSBERG", 11 | "lastModificationTime": "2025-07-08T10:14:05Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /doc/spam/map-1800920.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Castelblanco Law Group, APLC - Los Angeles","isLockedBy":null,"creatorFullName":"Eric Castelblanco","role":"none","description":null,"createdBy":"castelblancolaca@outlook.com","creationTime":"2024-10-15T12:12:43Z","lastModificationBy":"Eric Castelblanco","lastModificationTime":"2024-10-15T12:13:26Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1848180.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Welcome Avison","isLockedBy":null,"creatorFullName":"Avison Inc","role":"none","description":"","createdBy":"thebonnevilleshop@outlook.com","creationTime":"2025-01-23T17:51:58Z","lastModificationBy":"Avison Inc","lastModificationTime":"2025-01-23T17:57:01Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/non-spam/map-1400591.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":1.0}", 3 | "title": "Design Sprint Toolkit", 4 | "isLockedBy": null, 5 | "creatorFullName": "Innovation Lab", 6 | "role": "none", 7 | "description": "Step-by-step activities for a five-phase design sprint focused on problem discovery, ideation, prototyping, and testing.", 8 | "createdBy": "innovation.lab@wisemapping.com", 9 | "creationTime": "2024-04-09T10:05:00Z", 10 | "lastModificationBy": "Innovation Lab", 11 | "lastModificationTime": "2025-01-23T18:41:32Z", 12 | "xml": "", 13 | "public": true 14 | } 15 | 16 | -------------------------------------------------------------------------------- /doc/spam/map-1924625.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "DiFrancesco Plastic Surgery", 4 | "isLockedBy": null, 5 | "creatorFullName": "Lisa DiFrancesco", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "drdifrancesco@outlook.com", 9 | "creationTime": "2025-07-04T11:30:07Z", 10 | "lastModificationBy": "Lisa DiFrancesco", 11 | "lastModificationTime": "2025-07-04T11:30:29Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /wise-api/src/main/resources/newrelic-extensions.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | com.wisemapping.rest.MindmapController 13 | 14 | retrieveList 15 | 16 | java.lang.String 17 | jakarta.servlet.http.HttpServletRequest 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /doc/spam/map-1799281.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Managed Facility Solutions", 4 | "isLockedBy": null, 5 | "creatorFullName": "Haynes Dallas", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "mfsteamtxs@outlook.com", 9 | "creationTime": "2024-10-12T15:18:04Z", 10 | "lastModificationBy": "Haynes Dallas", 11 | "lastModificationTime": "2024-10-12T15:18:27Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /doc/spam/map-1925484.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Accent On You Cosmetic Surgery Center And Medi-Spa","isLockedBy":null,"creatorFullName":"- -","role":"none","description":null,"createdBy":"accentonyoutxusa@gmail.com","creationTime":"2025-07-08T06:09:58Z","lastModificationBy":"- -","lastModificationTime":"2025-07-08T06:11:12Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1935317.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Speedpro Coquitlam Signs and Car Wraps","isLockedBy":null,"creatorFullName":"- -","role":"none","description":null,"createdBy":"speedprocoquitlam@hyperdrivemail.com","creationTime":"2025-08-03T03:01:20Z","lastModificationBy":"- -","lastModificationTime":"2025-08-03T03:01:53Z","xml":"","public":true} -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/AccountSuspendedException.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 org.springframework.security.core.AuthenticationException; 22 | 23 | public class AccountSuspendedException extends AuthenticationException { 24 | 25 | public AccountSuspendedException(String message) { 26 | super(message); 27 | } 28 | 29 | public AccountSuspendedException(String message, Throwable cause) { 30 | super(message, cause); 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /doc/spam/map-1828461.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Welcome Ken","isLockedBy":null,"creatorFullName":"Ken Coughlin","role":"none","description":"","createdBy":"nationwestpembinahwy@hyperdrivemail.com","creationTime":"2024-12-07T16:01:24Z","lastModificationBy":"Ken Coughlin","lastModificationTime":"2024-12-07T16:04:09Z","xml":"","public":true} -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/model/Constants.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 class Constants { 22 | 23 | public static final int MAX_MAP_NAME_LENGTH = 512; 24 | public static final int MAX_LABEL_NAME_LENGTH = 30; 25 | public static final int MAX_MAP_DESCRIPTION_LENGTH = 512; 26 | public static final int MAX_USER_LASTNAME_LENGTH = 255; 27 | public static final int MAX_USER_FIRSTNAME_LENGTH = 255; 28 | public static final int MAX_USER_PASSWORD_LENGTH = 255; 29 | } 30 | -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/AccountDisabledException.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 org.springframework.security.core.AuthenticationException; 22 | 23 | public class AccountDisabledException extends AuthenticationException { 24 | 25 | public AccountDisabledException(String message) { 26 | super(message); 27 | } 28 | 29 | public AccountDisabledException(String message, Throwable cause) { 30 | super(message, cause); 31 | } 32 | } -------------------------------------------------------------------------------- /doc/spam/map-1928716.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"New York General Dentistry","isLockedBy":null,"creatorFullName":"Inna Chern","role":"none","description":null,"createdBy":"newyorkgeneraldentistryny@outlook.com","creationTime":"2025-07-16T10:17:12Z","lastModificationBy":"Inna Chern","lastModificationTime":"2025-07-16T10:17:24Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1929429.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Notary Public London - Edward Young","isLockedBy":null,"creatorFullName":"Edward Young","role":"none","description":null,"createdBy":"notarypublicinlondonuk@outlook.com","creationTime":"2025-07-19T02:32:33Z","lastModificationBy":"Edward Young","lastModificationTime":"2025-07-19T02:34:00Z","xml":"","public":true} -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/service/HistoryCleanupHandler.java: -------------------------------------------------------------------------------- 1 | package com.wisemapping.service; 2 | 3 | import java.util.Calendar; 4 | 5 | /** 6 | * Base interface for history cleanup handlers in the Chain of Responsibility pattern. 7 | * Each handler is responsible for a specific cleanup phase based on mindmap age criteria. 8 | */ 9 | public interface HistoryCleanupHandler { 10 | 11 | /** 12 | * Check if this handler can process the given mindmap based on its last modification time. 13 | * 14 | * @param mindmapId the mindmap ID 15 | * @param lastModificationTime the last modification time of the mindmap 16 | * @return true if this handler can process the mindmap, false otherwise 17 | */ 18 | boolean canHandle(int mindmapId, Calendar lastModificationTime); 19 | 20 | /** 21 | * Process the mindmap history cleanup for this handler's phase. 22 | * 23 | * @param mindmapId the mindmap ID 24 | * @param lastModificationTime the last modification time of the mindmap 25 | * @return number of history entries deleted by this handler 26 | */ 27 | int processCleanup(int mindmapId, Calendar lastModificationTime); 28 | 29 | /** 30 | * Set the next handler in the chain. 31 | * 32 | * @param nextHandler the next handler in the chain 33 | */ 34 | void setNext(HistoryCleanupHandler nextHandler); 35 | } 36 | -------------------------------------------------------------------------------- /doc/spam/map-1889339.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Grace & Grey Med Spa","isLockedBy":null,"creatorFullName":"Kyle Shaddix","role":"none","description":null,"createdBy":"graceandgreymedspa@outlook.com","creationTime":"2025-04-06T05:03:54Z","lastModificationBy":"Kyle Shaddix","lastModificationTime":"2025-04-06T05:05:02Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1909478.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Heroes Lawn Care","isLockedBy":null,"creatorFullName":"Micah Burgess","role":"none","description":null,"createdBy":"heroeslawncareaustin@gmail.com","creationTime":"2025-05-22T09:57:34Z","lastModificationBy":"Micah Burgess","lastModificationTime":"2025-05-22T09:59:07Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1912210.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "True Millwork", 4 | "isLockedBy": null, 5 | "creatorFullName": "Neil Teixeira", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "truemillwork@hyperdrivemail.com", 9 | "creationTime": "2025-05-29T03:36:47Z", 10 | "lastModificationBy": "Neil Teixeira", 11 | "lastModificationTime": "2025-05-29T03:38:13Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /doc/spam/map-1943823.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Face Skin & Body Bar", 4 | "isLockedBy": null, 5 | "creatorFullName": "Heather Dybvig", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "faceskinandbody@hyperdrivemail.com", 9 | "creationTime": "2025-08-29T16:28:15Z", 10 | "lastModificationBy": "Heather Dybvig", 11 | "lastModificationTime": "2025-08-29T16:28:52Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /doc/spam/map-1858501.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "IroSteel Metal Fabrication", 4 | "isLockedBy": null, 5 | "creatorFullName": "Jon Peters", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "irosteel@hyperdrivemail.com", 9 | "creationTime": "2025-02-08T15:54:41Z", 10 | "lastModificationBy": "Jon Peters", 11 | "lastModificationTime": "2025-02-08T15:55:03Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /doc/spam/map-1880847.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Eye Care Physicians & Surgeons of New Jersey - Browns Mills","isLockedBy":null,"creatorFullName":"Carl Hyder","role":"none","description":null,"createdBy":"eyecareofnjus@outlook.com","creationTime":"2025-03-20T05:53:16Z","lastModificationBy":"Carl Hyder","lastModificationTime":"2025-03-20T05:53:53Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1901495.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Adventure Yogi", 4 | "isLockedBy": null, 5 | "creatorFullName": "Michelle King", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "adventureyogiuk@gmail.com", 9 | "creationTime": "2025-05-05T02:42:32Z", 10 | "lastModificationBy": "Michelle King", 11 | "lastModificationTime": "2025-05-05T02:43:21Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/LabelCouldNotFoundException.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 | package com.wisemapping.exceptions; 19 | 20 | import org.jetbrains.annotations.NotNull; 21 | 22 | public class LabelCouldNotFoundException extends ClientException { 23 | 24 | private static final String MSG_KEY = "LABEL_CAN_NOT_BE_FOUND"; 25 | 26 | public LabelCouldNotFoundException(@NotNull String msg) 27 | { 28 | super(msg,Severity.FATAL); 29 | } 30 | 31 | @NotNull 32 | @Override 33 | protected String getMsgBundleKey() { 34 | return MSG_KEY; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/ValidationException.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 | 22 | import org.jetbrains.annotations.NotNull; 23 | import org.springframework.validation.Errors; 24 | 25 | public class ValidationException extends WiseMappingException { 26 | private final Errors errors; 27 | 28 | public ValidationException(@NotNull Errors errors) { 29 | super("Validation Exceptions:" + errors); 30 | this.errors = errors; 31 | } 32 | 33 | public Errors getErrors() { 34 | return errors; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /doc/spam/map-1929256.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"C. Buhler & Associates Ltd. - Licensed Insolvency Trustee","isLockedBy":null,"creatorFullName":"Kevin Buhler","role":"none","description":null,"createdBy":"debtfreenorthsaskatoon@hyperdrivemail.com","creationTime":"2025-07-18T08:17:04Z","lastModificationBy":"Kevin Buhler","lastModificationTime":"2025-07-18T08:18:09Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1978726.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Brustvergr\u00f6sserung Z\u00fcrich", 4 | "isLockedBy": null, 5 | "creatorFullName": "Brustvergr\u00f6sserung Z\u00fcrich", 6 | "role": "none", 7 | "description": "Brustvergr\u00f6sserung Z\u00fcrich", 8 | "createdBy": "brustvergroesserungzuerich@outlook.com", 9 | "creationTime": "2025-11-13T04:56:21Z", 10 | "lastModificationBy": "Brustvergr\u00f6sserung Z\u00fcrich", 11 | "lastModificationTime": "2025-11-13T04:56:36Z", 12 | "xml": "", 13 | "public": true 14 | } 15 | -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/EditionSessionExpiredException.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 org.jetbrains.annotations.NotNull; 22 | 23 | public class EditionSessionExpiredException 24 | extends ClientException 25 | { 26 | private static final String MSG_KEY = "MINDMAP_TIMESTAMP_OUTDATED"; 27 | 28 | public EditionSessionExpiredException(@NotNull String msg) 29 | { 30 | super(msg,Severity.INFO); 31 | } 32 | 33 | @NotNull 34 | @Override 35 | protected String getMsgBundleKey() { 36 | return MSG_KEY; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /doc/spam/map-1979542.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "haartransplantationschweiz@outlook.com", 4 | "isLockedBy": null, 5 | "creatorFullName": "Haartransplantation Schweiz", 6 | "role": "none", 7 | "description": "haartransplantationschweiz@outlook.com", 8 | "createdBy": "haartransplantationschweiz@outlook.com", 9 | "creationTime": "2025-11-15T04:40:56Z", 10 | "lastModificationBy": "Haartransplantation Schweiz", 11 | "lastModificationTime": "2025-11-15T04:41:42Z", 12 | "xml": "", 13 | "public": true 14 | } 15 | -------------------------------------------------------------------------------- /doc/spam/map-1931573.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Speedpro Signs Winnipeg South","isLockedBy":null,"creatorFullName":"Speedpro Signs","role":"none","description":null,"createdBy":"speedprowpgsouth@hyperdrivemail.com","creationTime":"2025-07-24T05:23:59Z","lastModificationBy":"Speedpro Signs","lastModificationTime":"2025-07-24T05:25:28Z","xml":"","public":true} -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/MapCouldNotFoundException.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 | 22 | import jakarta.validation.constraints.NotNull; 23 | 24 | public class MapCouldNotFoundException 25 | extends ClientException 26 | { 27 | private static final String MSG_KEY = "MAP_CAN_NOT_BE_FOUND"; 28 | 29 | public MapCouldNotFoundException(@NotNull String msg) 30 | { 31 | super(msg,Severity.FATAL); 32 | } 33 | 34 | @NotNull 35 | @Override 36 | protected String getMsgBundleKey() { 37 | return MSG_KEY; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /doc/spam/map-1925629.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Artistic Smiles Miami Dentist","isLockedBy":null,"creatorFullName":"Yon Elejabarrieta","role":"none","description":null,"createdBy":"artisticsmilesmiamidentistus@gmail.com","creationTime":"2025-07-08T08:02:27Z","lastModificationBy":"Yon Elejabarrieta","lastModificationTime":"2025-07-08T08:03:51Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1911897.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "FASTCHECK Criminal Record & Fingerprint Specialists", 4 | "isLockedBy": null, 5 | "creatorFullName": "Neil Murray", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "fastcheck@hyperdrivemail.com", 9 | "creationTime": "2025-05-28T09:50:16Z", 10 | "lastModificationBy": "Neil Murray", 11 | "lastModificationTime": "2025-05-28T09:50:48Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/UserRegistrationException.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 | /** 22 | * Exception thrown when user registration fails due to an unexpected error. 23 | * This indicates the registration process could not be completed and the user should try again. 24 | */ 25 | public class UserRegistrationException extends WiseMappingException { 26 | 27 | public UserRegistrationException(String message) { 28 | super(message); 29 | } 30 | 31 | public UserRegistrationException(String message, Throwable cause) { 32 | super(message, cause); 33 | } 34 | } 35 | 36 | -------------------------------------------------------------------------------- /doc/spam/map-1897411.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Creatures", 4 | "isLockedBy": null, 5 | "creatorFullName": "Elliott Garber", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "creaturesvaus@gmail.com", 9 | "creationTime": "2025-04-24T08:22:42Z", 10 | "lastModificationBy": "Elliott Garber", 11 | "lastModificationTime": "2025-04-24T08:24:14Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/MapNotPublicSecurityException.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 org.jetbrains.annotations.NotNull; 22 | 23 | public class MapNotPublicSecurityException 24 | extends ClientException { 25 | public static final String MSG_KEY = "ACCESS_HAS_BEEN_REVOKED"; 26 | 27 | public MapNotPublicSecurityException(@NotNull String msg) { 28 | super(msg, Severity.FATAL); 29 | } 30 | 31 | @NotNull 32 | @Override 33 | protected String getMsgBundleKey() { 34 | return MSG_KEY; 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/rest/JsonHttpMessageNotReadableException.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.rest; 20 | 21 | import org.springframework.http.HttpInputMessage; 22 | 23 | public class JsonHttpMessageNotReadableException extends org.springframework.http.converter.HttpMessageNotReadableException { 24 | 25 | public JsonHttpMessageNotReadableException(String msg, Exception cause) { 26 | super(msg, cause, (HttpInputMessage) null); 27 | } 28 | 29 | public JsonHttpMessageNotReadableException(String msg, Exception cause, HttpInputMessage httpInputMessage) { 30 | super(msg, cause, httpInputMessage); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/InvalidActivationCodeException.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 org.jetbrains.annotations.NotNull; 22 | 23 | public class InvalidActivationCodeException extends ClientException { 24 | private static final String MSG_KEY = "ACTIVATION.ERROR_INVALID_CODE"; 25 | 26 | public InvalidActivationCodeException() { 27 | super("Invalid activation code. The link may be incorrect or expired.", Severity.WARNING); 28 | } 29 | 30 | @NotNull 31 | @Override 32 | protected String getMsgBundleKey() { 33 | return MSG_KEY; 34 | } 35 | } 36 | 37 | -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/PasswordTooShortException.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 | 22 | import jakarta.validation.constraints.NotNull; 23 | 24 | public class PasswordTooShortException 25 | extends ClientException { 26 | private static final String PASSWORD_TOO_SHORT = "PASSWORD_TOO_SHORT"; 27 | 28 | public PasswordTooShortException() { 29 | super("Password must be at least 8 characters long", Severity.WARNING); 30 | } 31 | 32 | @NotNull 33 | @Override 34 | protected String getMsgBundleKey() { 35 | return PASSWORD_TOO_SHORT; 36 | } 37 | } 38 | 39 | -------------------------------------------------------------------------------- /doc/spam/map-1858673.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Welcome Shawn","isLockedBy":null,"creatorFullName":"Shawn Coughlin","role":"none","description":"","createdBy":"academyofmusicedmonton@hyperdrivemail.com","creationTime":"2025-02-09T10:58:06Z","lastModificationBy":"Shawn Coughlin","lastModificationTime":"2025-02-09T11:02:01Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1921918.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Doctors Implants", 4 | "isLockedBy": null, 5 | "creatorFullName": "Doctors Implants", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "doctorsimplantsdallas@hyperdrivemail.com", 9 | "creationTime": "2025-06-26T12:09:45Z", 10 | "lastModificationBy": "Doctors Implants", 11 | "lastModificationTime": "2025-06-26T12:10:17Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/AccountAlreadyActivatedException.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 org.jetbrains.annotations.NotNull; 22 | 23 | public class AccountAlreadyActivatedException extends ClientException { 24 | private static final String MSG_KEY = "ACTIVATION.ERROR_ALREADY_ACTIVE"; 25 | 26 | public AccountAlreadyActivatedException() { 27 | super("This account has already been activated. You can sign in with your credentials.", Severity.INFO); 28 | } 29 | 30 | @NotNull 31 | @Override 32 | protected String getMsgBundleKey() { 33 | return MSG_KEY; 34 | } 35 | } 36 | 37 | -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/model/CollaborationEmail.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 class CollaborationEmail 22 | { 23 | private String subject; 24 | private String message; 25 | 26 | public CollaborationEmail(){} 27 | 28 | public String getSubject() { 29 | return subject; 30 | } 31 | 32 | public void setSubject(String subject) { 33 | this.subject = subject; 34 | } 35 | 36 | public String getMessage() { 37 | return message; 38 | } 39 | 40 | public void setMessage(String message) { 41 | this.message = message; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/InvalidEmailException.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 | 22 | import jakarta.validation.constraints.NotNull; 23 | 24 | public class InvalidEmailException 25 | extends ClientException { 26 | private static final String EMAIL_IS_INVALID = "INVALID_EMAIL_ADDRESS"; 27 | 28 | public InvalidEmailException(@NotNull String emails) { 29 | super("Invalid email exception:" + emails, Severity.WARNING); 30 | } 31 | 32 | @NotNull 33 | @Override 34 | protected String getMsgBundleKey() { 35 | return EMAIL_IS_INVALID; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/PasswordTooLongException.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 | 22 | import jakarta.validation.constraints.NotNull; 23 | 24 | public class PasswordTooLongException 25 | extends ClientException { 26 | private static final String PASSWORD_TOO_LONG = "PASSWORD_TOO_LONG"; 27 | 28 | public PasswordTooLongException() { 29 | super("Password length must be less than 40 characters", Severity.WARNING); 30 | } 31 | 32 | @NotNull 33 | @Override 34 | protected String getMsgBundleKey() { 35 | return PASSWORD_TOO_LONG; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /doc/spam/map-1829537.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Peg City Fence Pros Inc.","isLockedBy":null,"creatorFullName":"Tyler Thorne","role":"none","description":null,"createdBy":"pegcityfencepros@hyperdrivemail.com","creationTime":"2024-12-10T09:14:01Z","lastModificationBy":"Tyler Thorne","lastModificationTime":"2024-12-10T09:14:48Z","xml":"","public":true} -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/service/spam/SpamDetectionStrategy.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.service.spam; 20 | 21 | import com.wisemapping.model.SpamStrategyType; 22 | 23 | public interface SpamDetectionStrategy { 24 | /** 25 | * Detects spam in a mindmap using the provided context. 26 | * The context contains both the Mindmap entity (for metadata) and the parsed MapModel (for content). 27 | * 28 | * @param context The spam detection context containing mindmap entity and parsed model 29 | * @return Spam detection result 30 | */ 31 | SpamDetectionResult detectSpam(SpamDetectionContext context); 32 | SpamStrategyType getType(); 33 | } -------------------------------------------------------------------------------- /doc/spam/map-1868063.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Pinnacle Painting and Decorating", 4 | "isLockedBy": null, 5 | "creatorFullName": "Paul Woloschuk", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "paintwithpinnacleca@gmail.com", 9 | "creationTime": "2025-02-27T05:56:50Z", 10 | "lastModificationBy": "Paul Woloschuk", 11 | "lastModificationTime": "2025-02-28T04:59:30Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /doc/spam/map-1889373.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Steven Wallach, MD, FACS","isLockedBy":null,"creatorFullName":"Steven Wallach","role":"none","description":null,"createdBy":"stevenwallachmd@outlook.com","creationTime":"2025-04-06T08:27:46Z","lastModificationBy":"Steven Wallach","lastModificationTime":"2025-04-06T08:29:59Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1919615.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Speedpro Signs Calgary SW", 4 | "isLockedBy": null, 5 | "creatorFullName": "Speedpro Signs", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "speedprocalgary-sw@hyperdrivemail.com", 9 | "creationTime": "2025-06-19T16:52:19Z", 10 | "lastModificationBy": "Speedpro Signs", 11 | "lastModificationTime": "2025-06-19T16:53:26Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /doc/spam/map-1919366.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Carefree of Colorado", 4 | "isLockedBy": null, 5 | "creatorFullName": "Carefree Colorado", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "carefreeofc@gmail.com", 9 | "creationTime": "2025-06-19T03:09:54Z", 10 | "lastModificationBy": "Carefree Colorado", 11 | "lastModificationTime": "2025-06-19T03:10:57Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/OwnerCannotChangeException.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 org.jetbrains.annotations.NotNull; 22 | 23 | public class OwnerCannotChangeException 24 | extends ClientException 25 | { 26 | 27 | private static final String MSG_KEY = "OWNER_ROLE_CAN_NOT_BE_CHANGED"; 28 | 29 | public OwnerCannotChangeException(@NotNull String email) 30 | { 31 | super("Collab email can not be change. " + email + " is the the owner.",Severity.WARNING); 32 | } 33 | 34 | @NotNull 35 | @Override 36 | protected String getMsgBundleKey() { 37 | return MSG_KEY; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /doc/spam/map-1919559.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Bare Body Sugaring", 4 | "isLockedBy": null, 5 | "creatorFullName": "Clairissa Roy-Altares", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "barebodyhenderson@hyperdrivemail.com", 9 | "creationTime": "2025-06-19T13:02:49Z", 10 | "lastModificationBy": "Clairissa Roy-Altares", 11 | "lastModificationTime": "2025-06-19T13:03:18Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/EmailNotExistsException.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.service.InvalidUserEmailException; 22 | import org.jetbrains.annotations.NotNull; 23 | 24 | public class EmailNotExistsException 25 | extends ClientException 26 | { 27 | 28 | private static final String MSG_KEY = "RESET_PASSWORD_INVALID_EMAIL"; 29 | 30 | public EmailNotExistsException(@NotNull InvalidUserEmailException e) 31 | { 32 | super(e.getMessage(),Severity.INFO); 33 | } 34 | 35 | @NotNull 36 | @Override 37 | protected String getMsgBundleKey() { 38 | return MSG_KEY; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /doc/spam/map-1936562.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Garden Wildlife\t", 4 | "isLockedBy": null, 5 | "creatorFullName": "Lois Hook", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "gardenwildlifenorthampton@gmail.com", 9 | "creationTime": "2025-08-07T07:42:37Z", 10 | "lastModificationBy": "Lois Hook", 11 | "lastModificationTime": "2025-08-07T07:43:19Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /doc/spam/map-1946633.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Catchfire Mergers and Acquisitions","isLockedBy":null,"creatorFullName":"Gary Brownstone","role":"none","description":null,"createdBy":"catchfiregroup@hyperdrivemail.com","creationTime":"2025-09-06T07:28:26Z","lastModificationBy":"Gary Brownstone","lastModificationTime":"2025-09-06T07:34:44Z","xml":"","public":true} -------------------------------------------------------------------------------- /doc/spam/map-1921311.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Heroes Lawn Care", 4 | "isLockedBy": null, 5 | "creatorFullName": "Micah Burgess", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "heroeslawncarehutto@gmail.com", 9 | "creationTime": "2025-06-25T05:23:13Z", 10 | "lastModificationBy": "Micah Burgess", 11 | "lastModificationTime": "2025-06-25T05:25:05Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /doc/spam/map-1940825.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Elevium Health", 4 | "isLockedBy": null, 5 | "creatorFullName": "Ritesha Krishnappa", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "eleviumhealth@gmail.com", 9 | "creationTime": "2025-08-21T09:02:14Z", 10 | "lastModificationBy": "Ritesha Krishnappa", 11 | "lastModificationTime": "2025-08-21T09:03:19Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/util/TimeUtils.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 | package com.wisemapping.util; 19 | 20 | import org.jetbrains.annotations.Nullable; 21 | 22 | import java.text.SimpleDateFormat; 23 | import java.util.Date; 24 | import java.util.TimeZone; 25 | 26 | final public class TimeUtils 27 | { 28 | private static final SimpleDateFormat sdf; 29 | static { 30 | sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 31 | sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 32 | } 33 | 34 | public static String toISO8601(@Nullable Date date) { 35 | String result = ""; 36 | if (date != null) { 37 | result = sdf.format(date) + "Z"; 38 | } 39 | return result; 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /wise-api/src/main/resources/mail/confirmationMail.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
5 | 6 | 7 | 8 | 16 | 19 | 20 | 21 |
10 | 11 | WiseMapping 14 | 15 | 17 | ${emailTitle} 18 |
22 |
23 |
24 |

${emailIntro}

25 | 26 |

${emailcheck}

27 | 28 |

${emailError}

29 | 30 |

${emailLinkHelp}

31 | 32 |

${emailSupport}

33 |
34 |
35 | 36 |

37 | ${emailTeam}
38 |

39 | 40 | -------------------------------------------------------------------------------- /wise-api/src/main/resources/mail/baseLayout.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
5 | 6 | 7 | 8 | 17 | 20 | 21 | 22 |
10 | 11 | WiseMapping 14 | 15 | 16 | 18 | ${messageTitle} 19 |
23 |
24 |
25 | ${messages.getMessage("EMAIL.GREETINGS",$noArgs,$locale)} ${firstName}: 26 |

27 | ${messageBody} 28 |

29 | 30 |

31 | The WiseMapping Team
32 |

33 |
34 |
35 | 36 |

${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 |
4 |
5 | 6 | 7 | 8 | 17 | 20 | 21 | 22 |
10 | 11 | Logo 14 | 15 | 16 | 18 | ${emailTitle} 19 |
23 |
24 |
25 | #if($message ) 26 |

${emailMessageFrom}

27 |
${message}
28 | #end 29 |

${emailClickToOpen}

30 | 31 |

${emailAccountInfo}

32 |
33 |
34 | 35 |

36 | ${emailTeam}
37 |

38 |

${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: 14 | 15 | #Disable inspections 16 | #exclude: 17 | # - name: 18 | # paths: 19 | # - 20 | 21 | projectJDK: "24" #(Applied in CI/CD pipeline) 22 | 23 | #Execute shell command before Qodana execution (Applied in CI/CD pipeline) 24 | #bootstrap: sh ./prepare-qodana.sh 25 | 26 | #Install IDE plugins before Qodana execution (Applied in CI/CD pipeline) 27 | #plugins: 28 | # - id: #(plugin id can be found at https://plugins.jetbrains.com) 29 | 30 | # Quality gate. Will fail the CI/CD pipeline if any condition is not met 31 | # severityThresholds - configures maximum thresholds for different problem severities 32 | # testCoverageThresholds - configures minimum code coverage on a whole project and newly added code 33 | # Code Coverage is available in Ultimate and Ultimate Plus plans 34 | #failureConditions: 35 | # severityThresholds: 36 | # any: 15 37 | # critical: 5 38 | # testCoverageThresholds: 39 | # fresh: 70 40 | # total: 50 41 | 42 | #Qodana supports other languages, for example, Python, JavaScript, TypeScript, Go, C#, PHP 43 | #For all supported languages see https://www.jetbrains.com/help/qodana/linters.html 44 | linter: jetbrains/qodana-jvm-community:2025.2 45 | -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/PasswordChangeNotAllowedException.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 | package com.wisemapping.exceptions; 19 | 20 | /** 21 | * Exception thrown when a user tries to change their password but their authentication method 22 | * doesn't allow password changes (e.g., Google OAuth2, LDAP, Facebook OAuth2). 23 | */ 24 | public class PasswordChangeNotAllowedException extends WiseMappingException { 25 | 26 | public PasswordChangeNotAllowedException() { 27 | super("Password changes are not allowed for external authentication providers (Google, LDAP, Facebook). Please change your password through your authentication provider."); 28 | } 29 | 30 | public PasswordChangeNotAllowedException(String message) { 31 | super(message); 32 | } 33 | 34 | public PasswordChangeNotAllowedException(String message, Throwable cause) { 35 | super(message, cause); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /doc/spam/map-1902545.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "UpDown Desk Australia", 4 | "isLockedBy": null, 5 | "creatorFullName": "UpDown Desk -", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "updowndeskvic@gmail.com", 9 | "creationTime": "2025-05-07T03:12:13Z", 10 | "lastModificationBy": "UpDown Desk -", 11 | "lastModificationTime": "2025-05-07T03:12:20Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /distribution/app-postgresql/.env.example: -------------------------------------------------------------------------------- 1 | # ======================================== 2 | # REQUIRED: Storage Path 3 | # ======================================== 4 | # Absolute path where PostgreSQL data will be stored 5 | # This directory must exist and have appropriate permissions 6 | # Example: /var/lib/wisemapping/data or /home/user/wisemapping-data 7 | WISEMAPPING_DATA_DIR=/path/to/your/wisemapping/data 8 | 9 | # ======================================== 10 | # PostgreSQL Configuration 11 | # ======================================== 12 | POSTGRES_DB=wisemapping 13 | POSTGRES_USER=wisemapping 14 | # REQUIRED: Set a secure password for production 15 | POSTGRES_PASSWORD=password 16 | 17 | # ======================================== 18 | # Application Ports 19 | # ======================================== 20 | WISEMAPPING_PORT=80 21 | POSTGRES_PORT=5432 22 | 23 | # ======================================== 24 | # Java Options 25 | # ======================================== 26 | JAVA_OPTS=-Xmx2048m -Xms1024m 27 | 28 | # ======================================== 29 | # Optional: Mail Configuration 30 | # ======================================== 31 | # MAIL_ENABLED=true 32 | # MAIL_HOST=smtp.gmail.com 33 | # MAIL_PORT=587 34 | # MAIL_USERNAME=your_email@gmail.com 35 | # MAIL_PASSWORD=your_app_password 36 | # MAIL_SENDER=noreply@wisemapping.com 37 | 38 | # ======================================== 39 | # Optional: Google OAuth 40 | # ======================================== 41 | # GOOGLE_OAUTH_ENABLED=true 42 | # GOOGLE_CLIENT_ID=your_client_id 43 | # GOOGLE_CLIENT_SECRET=your_client_secret 44 | 45 | # ======================================== 46 | # Optional: Base URLs (for production) 47 | # ======================================== 48 | # UI_BASE_URL=https://your-domain.com 49 | # API_BASE_URL=https://your-domain.com 50 | -------------------------------------------------------------------------------- /doc/spam/map-1940345.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "Spot Real Estate", 4 | "isLockedBy": null, 5 | "creatorFullName": "Mark Miles", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "spotrealtyus@gmail.com", 9 | "creationTime": "2025-08-20T06:15:11Z", 10 | "lastModificationBy": "Mark Miles", 11 | "lastModificationTime": "2025-08-20T06:16:01Z", 12 | "xml": "", 13 | "public": true 14 | } -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/service/LabelService.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 | package com.wisemapping.service; 19 | 20 | import com.wisemapping.exceptions.WiseMappingException; 21 | import com.wisemapping.model.MindmapLabel; 22 | import com.wisemapping.model.Account; 23 | import org.jetbrains.annotations.NotNull; 24 | import org.jetbrains.annotations.Nullable; 25 | 26 | import java.util.List; 27 | 28 | public interface LabelService { 29 | 30 | void addLabel(@NotNull final MindmapLabel label, @NotNull final Account user) throws WiseMappingException; 31 | 32 | @NotNull List getAll(@NotNull final Account user); 33 | 34 | @Nullable 35 | MindmapLabel findLabelById(int id, @NotNull final Account user); 36 | 37 | MindmapLabel getLabelByTitle(@NotNull String title, @NotNull final Account user); 38 | 39 | void removeLabel(@NotNull final MindmapLabel label, @NotNull final Account user) throws WiseMappingException; 40 | } 41 | -------------------------------------------------------------------------------- /doc/spam/map-1933705.json: -------------------------------------------------------------------------------- 1 | {"jsonProps":"{\"zoom\":0.8}","title":"Speedpro Signs Grande Prairie","isLockedBy":null,"creatorFullName":"Speedpro Signs","role":"none","description":null,"createdBy":"speedprogrande-prairie@hyperdrivemail.com","creationTime":"2025-07-29T14:57:41Z","lastModificationBy":"Speedpro Signs","lastModificationTime":"2025-07-29T14:59:55Z","xml":"","public":true} -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/exceptions/LockException.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.Mindmap; 22 | import com.wisemapping.model.Account; 23 | import com.wisemapping.service.LockManager; 24 | import org.jetbrains.annotations.NotNull; 25 | 26 | 27 | public class LockException 28 | extends ClientException { 29 | private static final String MSG_KEY = "MINDMAP_IS_LOCKED"; 30 | 31 | public LockException(@NotNull String message) { 32 | super(message, Severity.INFO); 33 | } 34 | 35 | public static LockException createLockLost(@NotNull Mindmap mindmap, @NotNull Account user, @NotNull LockManager manager) { 36 | return new LockException("Lock can not be granted to " + user.getEmail() + ". The lock is assigned to " + manager.getLockInfo(mindmap)); 37 | } 38 | 39 | @NotNull 40 | @Override 41 | protected String getMsgBundleKey() { 42 | return MSG_KEY; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/service/LockManager.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.service; 20 | 21 | import com.wisemapping.exceptions.AccessDeniedSecurityException; 22 | import com.wisemapping.exceptions.LockException; 23 | import com.wisemapping.model.Mindmap; 24 | import com.wisemapping.model.Account; 25 | import org.jetbrains.annotations.NotNull; 26 | 27 | public interface LockManager { 28 | boolean isLocked(@NotNull Mindmap mindmap); 29 | 30 | LockInfo getLockInfo(@NotNull Mindmap mindmap); 31 | 32 | void unlock(@NotNull Mindmap mindmap, @NotNull Account user) throws LockException, AccessDeniedSecurityException; 33 | 34 | void unlockAll(@NotNull Account user) throws LockException, AccessDeniedSecurityException; 35 | 36 | boolean isLockedBy(@NotNull Mindmap mindmap, @NotNull Account user); 37 | 38 | long generateSession(); 39 | 40 | @NotNull 41 | LockInfo lock(@NotNull Mindmap mindmap, @NotNull Account user) throws LockException; 42 | } 43 | -------------------------------------------------------------------------------- /wise-api/src/main/resources/spam-keywords.properties: -------------------------------------------------------------------------------- 1 | # CEO and Executive Spam Keywords 2 | ceo 3 | chief executive 4 | executive officer 5 | president 6 | founder 7 | entrepreneur 8 | business leader 9 | startup ceo 10 | 11 | # Business Opportunity Spam 12 | business opportunity 13 | investment opportunity 14 | partnership 15 | venture capital 16 | funding 17 | investor 18 | startup 19 | business proposal 20 | 21 | # Financial/Money Spam 22 | cryptocurrency 23 | bitcoin 24 | ethereum 25 | forex 26 | trading 27 | investment 28 | profit 29 | income 30 | revenue 31 | make money 32 | earn money 33 | get rich 34 | financial freedom 35 | passive income 36 | residual income 37 | commission 38 | bonus 39 | referral 40 | affiliate 41 | 42 | # Work From Home Spam 43 | work from home 44 | remote work 45 | freelance 46 | side hustle 47 | part time 48 | full time 49 | flexible hours 50 | own boss 51 | 52 | # MLM/Pyramid Scheme Keywords 53 | mlm 54 | multi level marketing 55 | network marketing 56 | pyramid 57 | downline 58 | upline 59 | recruitment 60 | team building 61 | 62 | # Sales/Marketing Spam 63 | marketing 64 | promotion 65 | advertising 66 | lead generation 67 | customer acquisition 68 | sales funnel 69 | conversion 70 | roi 71 | return on investment 72 | 73 | # Urgency/Pressure Tactics 74 | limited time 75 | act now 76 | urgent 77 | hurry 78 | expires 79 | deadline 80 | last chance 81 | final notice 82 | limited offer 83 | 84 | # Guarantee/Risk Claims 85 | guaranteed 86 | risk free 87 | no obligation 88 | free trial 89 | money back guarantee 90 | 100% success 91 | proven system 92 | tested method 93 | 94 | # Contact/Action Spam 95 | call now 96 | contact us 97 | click here 98 | visit website 99 | sign up 100 | register now 101 | download now 102 | get started 103 | join now -------------------------------------------------------------------------------- /wise-api/src/main/java/com/wisemapping/model/SpamStrategyTypeConverter.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 | import jakarta.persistence.AttributeConverter; 22 | import jakarta.persistence.Converter; 23 | 24 | /** 25 | * JPA converter for SpamStrategyType enum to/from char database column. 26 | * Converts the enum to a single character for database storage. 27 | */ 28 | @Converter 29 | public class SpamStrategyTypeConverter implements AttributeConverter { 30 | 31 | @Override 32 | public Character convertToDatabaseColumn(SpamStrategyType spamStrategyType) { 33 | if (spamStrategyType == null) { 34 | return null; 35 | } 36 | return spamStrategyType.getCode(); 37 | } 38 | 39 | @Override 40 | public SpamStrategyType convertToEntityAttribute(Character code) { 41 | if (code == null) { 42 | return null; 43 | } 44 | return SpamStrategyType.fromCode(code); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /doc/spam/map-1943830.json: -------------------------------------------------------------------------------- 1 | { 2 | "jsonProps": "{\"zoom\":0.8}", 3 | "title": "SpeedPro Signs Fort McMurray", 4 | "isLockedBy": null, 5 | "creatorFullName": "- -", 6 | "role": "none", 7 | "description": null, 8 | "createdBy": "speedprofort-mcmurray@hyperdrivemail.com", 9 | "creationTime": "2025-08-29T17:21:23Z", 10 | "lastModificationBy": "- -", 11 | "lastModificationTime": "2025-08-29T17:21:30Z", 12 | "xml": "", 13 | "public": true 14 | } --------------------------------------------------------------------------------