Index: imaps-backend/backendRender/.env
===================================================================
--- imaps-backend/backendRender/.env	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/.env	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,12 @@
+BACKEND_IP=192.168.104.7
+BACKEND_PORT=8080
+DB_PASS=Zim1M@jk41004
+DB_IP=192.168.104.7
+DB_PORT=5432
+DB_USER=stevetosak
+GITHUB_CLIENT_ID=Iv23liqzhX5wMYNDHtnz
+GITHUB_CLIENT_SECRET=6528f334f1731c8154c5fe872d222e188307b111
+GOOGLE_CLIENT_ID=1024418489231-ml40ukvqcg9ad1h5ejor5dm6ipt6p8fo.apps.googleusercontent.com
+GOOGLE_CLIENT_SECRET=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
+MAIL_NAME=stefantoska84@gmail.com
+MAIL_PASS=kqnj iyae ojrt beai
Index: imaps-backend/backendRender/.gitignore
===================================================================
--- imaps-backend/backendRender/.gitignore	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ 	(revision )
@@ -1,33 +1,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
Index: imaps-backend/backendRender/.idea/.gitignore
===================================================================
--- imaps-backend/backendRender/.idea/.gitignore	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/.idea/.gitignore	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
Index: imaps-backend/backendRender/.idea/backendRender.iml
===================================================================
--- imaps-backend/backendRender/.idea/backendRender.iml	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/.idea/backendRender.iml	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module version="4">
+  <component name="FacetManager">
+    <facet type="jpa" name="JPA">
+      <configuration>
+        <setting name="validation-enabled" value="true" />
+        <setting name="provider-name" value="Hibernate" />
+        <datasource-mapping>
+          <factory-entry name="backendRender" value="815c3bb1-c7b5-434d-9439-b67467b7aa8c" />
+          <factory-entry name="entityManagerFactory" value="58bf9d8f-dba8-4541-a125-e51c53efec08" />
+        </datasource-mapping>
+        <naming-strategy-map />
+      </configuration>
+    </facet>
+  </component>
+</module>
Index: imaps-backend/backendRender/.idea/compiler.xml
===================================================================
--- imaps-backend/backendRender/.idea/compiler.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/.idea/compiler.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CompilerConfiguration">
+    <annotationProcessing>
+      <profile default="true" name="Default" enabled="true" />
+      <profile name="Maven default annotation processors profile" enabled="true">
+        <sourceOutputDir name="target/generated-sources/annotations" />
+        <sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
+        <outputRelativeToContentRoot value="true" />
+        <module name="backendRender" />
+      </profile>
+    </annotationProcessing>
+  </component>
+  <component name="JavacSettings">
+    <option name="ADDITIONAL_OPTIONS_OVERRIDE">
+      <module name="backendRender" options="-parameters" />
+    </option>
+  </component>
+</project>
Index: imaps-backend/backendRender/.idea/dataSources.xml
===================================================================
--- imaps-backend/backendRender/.idea/dataSources.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/.idea/dataSources.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="DataSourceManagerImpl" format="xml" multifile-model="true">
+    <data-source source="LOCAL" name="imaps_prod@localhost" uuid="b958dd95-d4db-4509-b3bb-eb46f8cd3f13">
+      <driver-ref>postgresql</driver-ref>
+      <synchronize>true</synchronize>
+      <jdbc-driver>org.postgresql.Driver</jdbc-driver>
+      <jdbc-url>jdbc:postgresql://localhost:5432/imaps_prod</jdbc-url>
+      <jdbc-additional-properties>
+        <property name="com.intellij.clouds.kubernetes.db.host.port" />
+        <property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
+        <property name="com.intellij.clouds.kubernetes.db.container.port" />
+      </jdbc-additional-properties>
+      <working-dir>$ProjectFileDir$</working-dir>
+    </data-source>
+  </component>
+</project>
Index: imaps-backend/backendRender/.idea/diff-generator.xml
===================================================================
--- imaps-backend/backendRender/.idea/diff-generator.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/.idea/diff-generator.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="DiffGenerationConfig">
+    <option name="sourceModelValue" value="backendRender:backendRender" />
+    <option name="targetDbValue" value="6a336d53-5df6-47b6-8bbb-074a8196585f" />
+  </component>
+</project>
Index: imaps-backend/backendRender/.idea/encodings.xml
===================================================================
--- imaps-backend/backendRender/.idea/encodings.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/.idea/encodings.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+  </component>
+</project>
Index: imaps-backend/backendRender/.idea/jarRepositories.xml
===================================================================
--- imaps-backend/backendRender/.idea/jarRepositories.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/.idea/jarRepositories.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RemoteRepositoriesConfiguration">
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Central Repository" />
+      <option name="url" value="https://repo.maven.apache.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="central" />
+      <option name="name" value="Maven Central repository" />
+      <option name="url" value="https://repo1.maven.org/maven2" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="jboss.community" />
+      <option name="name" value="JBoss Community repository" />
+      <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
+    </remote-repository>
+  </component>
+</project>
Index: imaps-backend/backendRender/.idea/misc.xml
===================================================================
--- imaps-backend/backendRender/.idea/misc.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/.idea/misc.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="21" project-jdk-type="JavaSDK" />
+</project>
Index: imaps-backend/backendRender/.idea/modules.xml
===================================================================
--- imaps-backend/backendRender/.idea/modules.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/.idea/modules.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/backendRender.iml" filepath="$PROJECT_DIR$/.idea/backendRender.iml" />
+    </modules>
+  </component>
+</project>
Index: imaps-backend/backendRender/.idea/uiDesigner.xml
===================================================================
--- imaps-backend/backendRender/.idea/uiDesigner.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/.idea/uiDesigner.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Palette2">
+    <group name="Swing">
+      <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
+      </item>
+      <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.svg" removable="false" auto-create-binding="false" can-attach-label="true">
+        <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
+        <initial-values>
+          <property name="text" value="Button" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="RadioButton" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="CheckBox" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
+        <initial-values>
+          <property name="text" value="Label" />
+        </initial-values>
+      </item>
+      <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
+          <preferred-size width="150" height="-1" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
+          <preferred-size width="150" height="50" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
+          <preferred-size width="200" height="200" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.svg" removable="false" auto-create-binding="true" can-attach-label="true">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
+      </item>
+      <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
+      </item>
+      <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
+          <preferred-size width="-1" height="20" />
+        </default-constraints>
+      </item>
+      <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.svg" removable="false" auto-create-binding="false" can-attach-label="false">
+        <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
+      </item>
+      <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.svg" removable="false" auto-create-binding="true" can-attach-label="false">
+        <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
+      </item>
+    </group>
+  </component>
+</project>
Index: imaps-backend/backendRender/.idea/vcs.xml
===================================================================
--- imaps-backend/backendRender/.idea/vcs.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/.idea/vcs.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
+  </component>
+</project>
Index: imaps-backend/backendRender/Dockerfile
===================================================================
--- imaps-backend/backendRender/Dockerfile	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/Dockerfile	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,4 @@
+FROM openjdk:17-jdk-alpine
+ARG JAR_FILE=target/*.jar
+COPY ${JAR_FILE} app.jar
+ENTRYPOINT ["java","-jar","/app.jar"]
Index: imaps-backend/backendRender/HELP.md
===================================================================
--- imaps-backend/backendRender/HELP.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/HELP.md	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,28 @@
+# Getting Started
+
+### Reference Documentation
+For further reference, please consider the following sections:
+
+* [Official Apache Maven documentation](https://maven.apache.org/guides/index.html)
+* [Spring Boot Maven Plugin Reference Guide](https://docs.spring.io/spring-boot/3.3.3/maven-plugin)
+* [Create an OCI image](https://docs.spring.io/spring-boot/3.3.3/maven-plugin/build-image.html)
+* [Spring Boot DevTools](https://docs.spring.io/spring-boot/docs/3.3.3/reference/htmlsingle/index.html#using.devtools)
+* [Spring Web](https://docs.spring.io/spring-boot/docs/3.3.3/reference/htmlsingle/index.html#web)
+* [Spring Session](https://docs.spring.io/spring-session/reference/)
+* [Thymeleaf](https://docs.spring.io/spring-boot/docs/3.3.3/reference/htmlsingle/index.html#web.servlet.spring-mvc.template-engines)
+
+### Guides
+The following guides illustrate how to use some features concretely:
+
+* [Building a RESTful Web Service](https://spring.io/guides/gs/rest-service/)
+* [Serving Web Content with Spring MVC](https://spring.io/guides/gs/serving-web-content/)
+* [Building REST services with Spring](https://spring.io/guides/tutorials/rest/)
+* [Handling Form Submission](https://spring.io/guides/gs/handling-form-submission/)
+
+### Maven Parent overrides
+
+Due to Maven's design, elements are inherited from the parent POM to the project POM.
+While most of the inheritance is fine, it also inherits unwanted elements like `<license>` and `<developers>` from the parent.
+To prevent this, the project POM contains empty overrides for these elements.
+If you manually switch to a different parent and actually want the inheritance, you need to remove those overrides.
+
Index: imaps-backend/backendRender/pom.xml
===================================================================
--- imaps-backend/backendRender/pom.xml	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/pom.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -10,9 +10,9 @@
 	</parent>
 	<groupId>internettehnologii.imaps</groupId>
-	<artifactId>backendRender</artifactId>
+	<artifactId>imaps-backend</artifactId>
 	<version>0.0.1-SNAPSHOT</version>
-	<packaging>war</packaging>
-	<name>backendRender</name>
-	<description>Backend api for rendering an indoor map</description>
+	<packaging>jar</packaging>
+	<name>imaps-backend</name>
+	<description>Backend api for rendering indoor maps</description>
 	<url/>
 	<licenses>
@@ -121,4 +121,14 @@
 		</dependency>
 		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-mail</artifactId>
+			<version>3.4.0</version>
+		</dependency>
+
+		<dependency>
 			<groupId>com.googlecode.json-simple</groupId>
 			<artifactId>json-simple</artifactId>
@@ -146,7 +156,8 @@
 			<scope>test</scope>
 		</dependency>
-
-
-
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-actuator</artifactId>
+		</dependency>
 
 	</dependencies>
Index: imaps-backend/backendRender/run.sh
===================================================================
--- imaps-backend/backendRender/run.sh	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/run.sh	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,25 @@
+#!/bin/bash
+IMAGE_NAME="imaps-backend"
+TAG="latest"
+
+
+docker rm -f imaps-backendC
+
+if docker images "$IMAGE_NAME" | grep -q "$TAG"; then
+    echo "Image $IMAGE_NAME:$TAG found, deleting..."
+    docker rmi "$IMAGE_NAME:$TAG"
+else
+    echo "Image $IMAGE_NAME:$TAG not found."
+fi
+
+
+docker build -t imaps-backend .
+
+
+docker run \
+--name imaps-backendC \
+--privileged  \
+--env-file .env \
+-p 8080:8080 \
+-d \
+imaps-backend
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/BackendRenderApplication.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/BackendRenderApplication.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/BackendRenderApplication.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -3,4 +3,9 @@
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
+import org.springframework.mail.javamail.JavaMailSender;
+import org.springframework.mail.javamail.JavaMailSenderImpl;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
 
 @SpringBootApplication
@@ -11,3 +16,8 @@
 	}
 
+	@Bean
+	public PasswordEncoder passwordEncoder(){
+		return new BCryptPasswordEncoder(12);
+	}
+
 }
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/config/OAuthConfig.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/config/OAuthConfig.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/config/OAuthConfig.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,29 @@
+package internettehnologii.imaps.backendRender.web.config;
+
+import lombok.Getter;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+@Getter
+@Component
+public class OAuthConfig {
+    @Value("${github.client.id}")
+    private String GITHUB_CLIENT_ID;
+    @Value("${github.client.secret}")
+    private String GITHUB_CLIENT_SECRET;
+    @Value("${github.redirect.uri}")
+    private String GITHUB_REDIRECT_URI;
+    @Value("${google.redirect.uri}")
+    private String GOOGLE_REDIRECT_URI;
+    @Value("${google.client.id}")
+    private String GOOGLE_CLIENT_ID;
+    @Value("${google.client.secret}")
+    private String GOOGLE_CLIENT_SECRET;
+
+    private final String GITHUB_TOKEN_URL = "https://github.com/login/oauth/access_token";
+    private final String GITHUB_USER_URL = "https://api.github.com/user";
+
+    private final String GOOGLE_TOKEN_URL = "https://oauth2.googleapis.com/token";
+    private final String GOOGLE_USER_URL = "https://www.googleapis.com/oauth2/v3/userinfo";
+
+}
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/AdminController.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/AdminController.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/AdminController.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -4,6 +4,8 @@
 import internettehnologii.imaps.backendRender.web.service.interfaces.MapService;
 import internettehnologii.imaps.backendRender.web.service.interfaces.PublishRequestService;
+import internettehnologii.imaps.backendRender.web.service.interfaces.ReportService;
 import internettehnologii.imaps.backendRender.web.util.DTO.MapDTO;
 import internettehnologii.imaps.backendRender.web.util.DTO.PublishMapDTO;
+import internettehnologii.imaps.backendRender.web.util.DTO.ReportDTO;
 import internettehnologii.imaps.backendRender.web.util.Util;
 import org.springframework.http.ResponseEntity;
@@ -23,8 +25,10 @@
     private final MapService mapService;
     private final PublishRequestService publishRequestService;
+    private final ReportService reportService;
 
-    public AdminController(MapService mapService, PublishRequestService publishRequestService) {
+    public AdminController(MapService mapService, PublishRequestService publishRequestService, ReportService reportService) {
         this.mapService = mapService;
         this.publishRequestService = publishRequestService;
+        this.reportService = reportService;
     }
 
@@ -32,5 +36,5 @@
     public ResponseEntity<List<MapDTO>> getPendingMapRequests() {
         try {
-            List<MapDTO> maps = Util.convertToMapDTO(mapService.findByStatus(MAP_STATUS.INVALID));
+            List<MapDTO> maps = Util.convertToMapDTO(mapService.findByStatus(MAP_STATUS.PENDING));
             return ResponseEntity.ok(maps);
         } catch (Exception e) {
@@ -71,7 +75,7 @@
     }
     @PostMapping("/pr/deny")
-    public ResponseEntity<Map<String,Object>> denyPR(@RequestParam("id") Integer id) {
+    public ResponseEntity<Map<String,Object>> denyPR(@RequestParam("id") Integer id,@RequestParam String reason) {
         try{
-            publishRequestService.denyPublishRequest(id);
+            publishRequestService.denyPublishRequest(id,reason);
         } catch (Exception e){
             e.printStackTrace();
@@ -79,3 +83,23 @@
         return ResponseEntity.ok(new HashMap<>());
     }
+    @GetMapping("/load-reports")
+    public ResponseEntity<List<ReportDTO>> getReports() {
+        try {
+            List<ReportDTO> reportDTOS = reportService.getReports()
+                    .stream()
+                    .map(report ->
+                new ReportDTO(
+                        report.getUser().getUsername(),
+                        report.getMap().getName(),
+                        report.getSubject(),
+                        report.getContent(),
+                        report.getCreatedAt().toString()
+                        )
+            ).toList();
+            return ResponseEntity.ok(reportDTOS);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ResponseEntity.badRequest().build();
+        }
+    }
 }
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/AuthController.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/AuthController.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/AuthController.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -23,5 +23,5 @@
 @RequestMapping("/api/auth")
 @RestController
-@CrossOrigin(origins = "http://localhost:5173/")
+//@CrossOrigin(origins = "http://localhost:5173")
 public class AuthController {
 
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/InvalidStateException.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/InvalidStateException.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/InvalidStateException.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,7 @@
+package internettehnologii.imaps.backendRender.web.controllers;
+
+public class InvalidStateException extends RuntimeException {
+  public InvalidStateException(String message) {
+    super(message);
+  }
+}
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/MapDrawController.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/MapDrawController.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/MapDrawController.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -52,22 +52,23 @@
 
     @PostMapping("/publish/add")
-    public ResponseEntity<Map<String,Object>> sendPublishRequest(@RequestBody PublishMapDTO formData, @RequestParam String username) {
+    public ResponseEntity<MapDTO> sendPublishRequest(@RequestBody PublishMapDTO formData, @RequestParam String username) {
 
         System.out.println("FORM DATA: -------------------------------------------- " + formData);
-        try{
+        try {
             IMapsUser user = userService.getUser(username);
 
-            publishRequestService.addPublishRequest(formData,user);
-
-            return ResponseEntity.ok(new HashMap<>());
-
-        } catch (Exception e){
-            return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
-        }
-    }
+            MapDTO updatedMap = publishRequestService.addPublishRequest(formData, user);
+
+            return ResponseEntity.ok(updatedMap);
+
+        } catch (Exception e) {
+            return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
+        }
+    }
+
     @GetMapping("/publish/get")
     public ResponseEntity<PublishMapDTO> getPublishRequestForMap(@RequestParam String mapName) {
         PublishRequest pr = publishRequestService.getPublishRequestByMapName(mapName);
-        PublishMapDTO dto = new PublishMapDTO(pr.getId(),pr.getName(), pr.getLastName(), pr.getMap().getName(), pr.getMapType(), pr.getGMapsUrl());
+        PublishMapDTO dto = new PublishMapDTO(pr.getId(), pr.getName(), pr.getLastName(), pr.getMap().getName(), pr.getMapType(), pr.getGMapsUrl());
         return ResponseEntity.ok(dto);
     }
@@ -76,10 +77,10 @@
     public ResponseEntity<List<MapDTO>> getFavouriteMapsForUser(@RequestParam String username) {
 
-        try{
+        try {
             IMapsUser user = userService.getUser(username);
             List<MapDTO> mapDTOS = Util.convertToMapDTO(user.getFavoriteMaps());
             return ResponseEntity.ok().body(mapDTOS);
 
-        } catch (Exception e){
+        } catch (Exception e) {
             System.out.println(e.getMessage());
             return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
@@ -91,11 +92,6 @@
             (@RequestBody SaveMapDTO saveMapDTO, @RequestParam String username) {
 
-        System.out.println("MAP DTO: " + saveMapDTO);
-
-        try {
-
-            System.out.println("=================================");
-            System.out.println("MAPDTO: " + saveMapDTO);
-            System.out.println("USERNAME:" + username);
+
+        try {
             IndoorMap map = mapService.getMapForUser(username, saveMapDTO.getMapName());
             Floor f = floorService.getFloorByNum(saveMapDTO.getFloorNum(), map);
@@ -114,5 +110,5 @@
             System.out.println("UPDATED FLOOR " + f.getFloorNumber());
 
-            FloorDTO floorDTO = new FloorDTO(f.getFloorNumber(), saveMapDTO.getMapName(),f.getMapData().getShapeData());
+            FloorDTO floorDTO = new FloorDTO(f.getFloorNumber(), saveMapDTO.getMapName(), f.getMapData().getShapeData());
 
             return ResponseEntity.ok(floorDTO);
@@ -126,10 +122,10 @@
     @PutMapping("/my-maps/create")
     public ResponseEntity<MapDTO> createMap(@RequestBody CreateMapDTO mapData, @RequestParam String username) {
-        try{
-            mapService.createMap(mapData.getName(), mapData.getMapType() , username);
-            IndoorMap map = mapService.getMapForUser(username,mapData.getName());
+        try {
+            mapService.createMap(mapData.getName(), username);
+            IndoorMap map = mapService.getMapForUser(username, mapData.getName());
             MapDTO mapDTO = new MapDTO(map.getName(),
-                    map.getMapType()
-                    ,map.getCreatedAt(),
+                    map.getMapType(),
+                    map.getCreatedAt(),
                     map.getModifiedAt(),
                     map.getStatus().name(),
@@ -139,5 +135,4 @@
         } catch (Exception e) {
             System.out.println(e.getMessage());
-            e.printStackTrace();
             return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
         }
@@ -147,6 +142,6 @@
     @GetMapping("/my-maps/load")
     public ResponseEntity<List<FloorDTO>> loadPersonalMap(@RequestParam String mapName, @RequestParam String username) {
-        try{
-            IndoorMap map = mapService.getMapForUser(username,mapName);
+        try {
+            IndoorMap map = mapService.getMapForUser(username, mapName);
             List<Floor> floors = map.getFloors();
             return ResponseEntity.ok().body(Util.convertToFloorDTO(floors));
@@ -158,13 +153,13 @@
 
     @PostMapping("/room-types/add")
-    public ResponseEntity<Map<String,Object>> addRoomType(@RequestParam String roomTypeName,
-                                                          @RequestParam String username,
-                                                          @RequestParam String mapName) {
-        try {
-            IndoorMap map = mapService.getMapForUser(username,mapName);
-            roomTypeService.addRoomType(roomTypeName,map);
+    public ResponseEntity<Map<String, Object>> addRoomType(@RequestParam String roomTypeName,
+                                                           @RequestParam String username,
+                                                           @RequestParam String mapName) {
+        try {
+            IndoorMap map = mapService.getMapForUser(username, mapName);
+            roomTypeService.addRoomType(roomTypeName, map);
             return ResponseEntity.ok(new HashMap<>());
 
-        } catch (Exception e){
+        } catch (Exception e) {
             System.out.println(e.getMessage());
             return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
@@ -175,5 +170,5 @@
     public ResponseEntity<List<RoomTypeDTO>> getRoomTypesForMap(@RequestParam String mapName, @RequestParam String username) {
 
-        IndoorMap map = mapService.getMapForUser(username,mapName);
+        IndoorMap map = mapService.getMapForUser(username, mapName);
 
         List<RoomTypeDTO> roomTypeDTOS = map.getRoomTypes().stream().map(r -> new RoomTypeDTO(r.getName())).toList();
@@ -182,10 +177,10 @@
 
     @DeleteMapping("/floors/delete")
-    public ResponseEntity<Map<String,Object>> deleteFloor(@RequestParam String mapName,
-                                                          @RequestParam int floorNum) {
-        try{
-            floorService.deleteFloor(floorNum,mapName);
+    public ResponseEntity<Map<String, Object>> deleteFloor(@RequestParam String mapName,
+                                                           @RequestParam int floorNum) {
+        try {
+            floorService.deleteFloor(floorNum, mapName);
             return ResponseEntity.ok(new HashMap<>());
-        } catch (Exception e){
+        } catch (Exception e) {
             System.out.println(e.getMessage());
             return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
@@ -194,8 +189,8 @@
 
     @PutMapping("/floors/add")
-    public ResponseEntity<Map<String,Object>> addFloor(@RequestBody FloorDTO floorDTO) {
-        Map<String,Object> response = new HashMap<>();
-        try{
-            floorService.addFloor(floorDTO.getNum(),floorDTO.getMapName());
+    public ResponseEntity<Map<String, Object>> addFloor(@RequestBody FloorDTO floorDTO) {
+        Map<String, Object> response = new HashMap<>();
+        try {
+            floorService.addFloor(floorDTO.getNum(), floorDTO.getMapName());
             return ResponseEntity.ok(response);
         } catch (Exception e) {
@@ -226,4 +221,21 @@
 
 
+    @PostMapping("/my-maps/edit")
+    public ResponseEntity<MapDTO> updateMapInfo(@RequestBody EditMapDTO editMapDTO) {
+
+
+
+        try {
+
+            MapDTO mapDTO = mapService.updateMapInfo(editMapDTO);
+
+
+            return new ResponseEntity<>(mapDTO, HttpStatus.OK);
+
+        } catch (Exception e) {
+            return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
+        }
+
+    }
 
 
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/MapViewController.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/MapViewController.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/MapViewController.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -6,12 +6,10 @@
 import internettehnologii.imaps.backendRender.web.entities.IMapsUser;
 import internettehnologii.imaps.backendRender.web.entities.IndoorMap;
+import internettehnologii.imaps.backendRender.web.entities.Report;
 import internettehnologii.imaps.backendRender.web.exceptions.EmptyMapException;
-import internettehnologii.imaps.backendRender.web.exceptions.FloorNotFoundException;
-import internettehnologii.imaps.backendRender.web.service.interfaces.GraphService;
-import internettehnologii.imaps.backendRender.web.service.interfaces.FloorService;
-import internettehnologii.imaps.backendRender.web.service.interfaces.MapService;
-import internettehnologii.imaps.backendRender.web.service.interfaces.UserService;
+import internettehnologii.imaps.backendRender.web.service.interfaces.*;
 import internettehnologii.imaps.backendRender.web.util.DTO.FloorDTO;
 import internettehnologii.imaps.backendRender.web.util.DTO.MapDTO;
+import internettehnologii.imaps.backendRender.web.util.DTO.ReportDTO;
 import internettehnologii.imaps.backendRender.web.util.DTO.RoomTypeDTO;
 import internettehnologii.imaps.backendRender.web.util.Util;
@@ -34,11 +32,13 @@
     private final GraphService graphService;
     private final UserService userService;
+    private final ReportService reportService;
 
     @Autowired
-    public MapViewController(MapService mapService, FloorService floorService, GraphService graphService, UserService userService) {
+    public MapViewController(MapService mapService, FloorService floorService, GraphService graphService, UserService userService, ReportService reportService) {
         this.mapService = mapService;
         this.floorService = floorService;
         this.graphService = graphService;
         this.userService = userService;
+        this.reportService = reportService;
     }
 
@@ -120,5 +120,5 @@
             IndoorMap map = mapService.getMapByName(mapName);
             IMapsUser user = userService.getUser(username);
-            userService.addToFavorites(user, map);
+            userService.addFavoriteMap(user, map);
             return ResponseEntity.ok(new HashMap<>());
         } catch (Exception e){
@@ -132,5 +132,5 @@
             IndoorMap map = mapService.getMapByName(mapName);
             IMapsUser user = userService.getUser(username);
-            userService.removeFromFavorites(user, map);
+            userService.removeFavoriteMap(user, map);
             return ResponseEntity.ok(new HashMap<>());
         } catch (Exception e){
@@ -139,5 +139,20 @@
         }
     }
+    @PostMapping("/protected/reports/create")
+    public ResponseEntity<Map<String, Object>> createReport(
+            @RequestBody ReportDTO reportBody) {
+        try {
+            IMapsUser user = userService.getUser(reportBody.getUsername());
+            IndoorMap map = mapService.getMapByName(reportBody.getMapName());
+            Report report = new Report(user, map, reportBody.getSubject(), reportBody.getContent());
+            reportService.saveReport(report);
 
+            Map<String, Object> response = new HashMap<>();
+            return ResponseEntity.ok(response);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return ResponseEntity.status(404).body(new HashMap<>());
+        }
+    }
 
 }
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/OAuthController.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/OAuthController.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/OAuthController.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,141 @@
+package internettehnologii.imaps.backendRender.web.controllers;
+
+import internettehnologii.imaps.backendRender.web.config.OAuthConfig;
+import internettehnologii.imaps.backendRender.web.service.interfaces.OAuthService;
+import internettehnologii.imaps.backendRender.web.service.interfaces.StateStore;
+import internettehnologii.imaps.backendRender.web.util.DTO.UserAuthSuccessDTO;
+import internettehnologii.imaps.backendRender.web.util.OAuthProviders;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.http.*;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.client.RestTemplate;
+
+import java.net.URI;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+
+@Controller
+@RequestMapping("/api/oauth")
+public class OAuthController {
+
+    private final StateStore stateStore;
+
+    private final OAuthService githubOAuthService;
+    private final OAuthService googleOAuthService;
+    private final OAuthConfig oAuthConfig;
+
+    private final RestTemplate restTemplate = new RestTemplate();
+
+    public OAuthController(StateStore stateStore,
+                           @Qualifier("githubOAuth") OAuthService githubOAuthService,
+                           @Qualifier("googleOAuth") OAuthService googleOAuthService,
+                           OAuthConfig oAuthConfig) {
+
+        this.stateStore = stateStore;
+        this.githubOAuthService = githubOAuthService;
+        this.googleOAuthService = googleOAuthService;
+        this.oAuthConfig = oAuthConfig;
+    }
+
+
+    @GetMapping("/state")
+    public ResponseEntity<String> getState() {
+        String uuid = UUID.randomUUID().toString();
+        stateStore.storeState(uuid);
+        return ResponseEntity.ok(uuid);
+    }
+
+
+    @GetMapping("/callback/github")
+    public ResponseEntity<UserAuthSuccessDTO> callbackGithub(@RequestParam("code") String code,
+                                                             @RequestParam("state") String state) {
+
+        if(!stateStore.isValidState(state))
+            throw new InvalidStateException("State is not valid: " + state);
+
+
+        String accessToken = exchangeCodeForAccessToken(code,OAuthProviders.GITHUB.name());
+        String userInfo = fetchUserInfo(accessToken,OAuthProviders.GITHUB.name());
+        System.out.println("User info: " + userInfo);
+        UserAuthSuccessDTO userAuthSuccessDTO = githubOAuthService.login(userInfo,accessToken);
+
+
+        String encodedUsrname = URLEncoder.encode(userAuthSuccessDTO.getUsername(), StandardCharsets.UTF_8);
+        String encodedToken = URLEncoder.encode(userAuthSuccessDTO.getToken(), StandardCharsets.UTF_8);
+
+        HttpHeaders headers = new HttpHeaders();
+        headers.setLocation(URI.create("https://imaps.mk/auth-callback?token=" + encodedToken + "&username=" + encodedUsrname));
+        headers.add("Set-Cookie", "Authorization=Bearer " + userAuthSuccessDTO + "; HttpOnly; Path=/; SameSite=Strict");
+
+        return new ResponseEntity<>(userAuthSuccessDTO,headers, HttpStatus.FOUND);
+    }
+    @GetMapping("/callback/google")
+    public ResponseEntity<UserAuthSuccessDTO> callbackGoogle(@RequestParam("code") String code,
+                                                             @RequestParam("state") String state){
+
+        if(!stateStore.isValidState(state))
+            throw new InvalidStateException("State is not valid: " + state);
+
+        String accessToken = exchangeCodeForAccessToken(code,OAuthProviders.GOOGLE.name());
+        String userInfo = fetchUserInfo(accessToken,OAuthProviders.GOOGLE.name());
+        UserAuthSuccessDTO userAuthSuccessDTO = googleOAuthService.login(userInfo,accessToken);
+
+        String encodedUsrname = URLEncoder.encode(userAuthSuccessDTO.getUsername(), StandardCharsets.UTF_8);
+        String encodedToken = URLEncoder.encode(userAuthSuccessDTO.getToken(), StandardCharsets.UTF_8);
+
+        HttpHeaders headers = new HttpHeaders();
+        headers.setLocation(URI.create("https://imaps.mk/auth-callback?token=" + encodedToken + "&username=" + encodedUsrname));
+        headers.add("Set-Cookie", "Authorization=Bearer " + userAuthSuccessDTO + "; HttpOnly; Path=/; SameSite=Strict");
+        return new ResponseEntity<>(userAuthSuccessDTO,headers, HttpStatus.FOUND);
+    }
+
+    Map<String,String> getBodyByProvider(String provider,String code) {
+        Map<String, String> body = new HashMap<>();
+        if(provider.equals(OAuthProviders.GOOGLE.name())){
+            body.put("client_id", oAuthConfig.getGOOGLE_CLIENT_ID());
+            body.put("client_secret", oAuthConfig.getGOOGLE_CLIENT_SECRET());
+            body.put("code", code);
+            body.put("redirect_uri", oAuthConfig.getGOOGLE_REDIRECT_URI());
+            body.put("grant_type", "authorization_code");
+        } else {
+            body.put("client_id", oAuthConfig.getGITHUB_CLIENT_ID());
+            body.put("client_secret", oAuthConfig.getGITHUB_CLIENT_SECRET());
+            body.put("code", code);
+            body.put("redirect_uri", oAuthConfig.getGITHUB_REDIRECT_URI());
+            body.put("scope","user");
+        }
+
+        return body;
+    }
+
+    private String exchangeCodeForAccessToken(String code,String provider) {
+        HttpHeaders headers = new HttpHeaders();
+        headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
+
+        String url = Objects.equals(provider, OAuthProviders.GOOGLE.name()) ? oAuthConfig.getGOOGLE_TOKEN_URL() : oAuthConfig.getGITHUB_TOKEN_URL();
+
+        Map<String, String> body = getBodyByProvider(provider,code);
+        HttpEntity<Map<String,String>> request = new HttpEntity<>(body,headers);
+
+        ResponseEntity<Map> response = restTemplate.postForEntity(url, request, Map.class);
+        Map<String,Object> respBody = response.getBody();
+
+        return (String) respBody.get("access_token");
+    }
+
+    private String fetchUserInfo(String accessToken,String provider){
+        String url = Objects.equals(provider, OAuthProviders.GOOGLE.name()) ? oAuthConfig.getGOOGLE_USER_URL() : oAuthConfig.getGITHUB_USER_URL();
+
+        HttpHeaders headers = new HttpHeaders();
+        headers.setBearerAuth(accessToken);
+        HttpEntity<Void> request = new HttpEntity<>(headers);
+        ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, request, String.class);
+
+        return response.getBody();
+    }
+
+}
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/IMapsUser.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/IMapsUser.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/IMapsUser.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -30,4 +30,12 @@
     @Column(name = "profile_image_url")
     private String profileImageUrl;
+    @Column(name = "oauth_provider")
+    private String OAuthProvider;
+    @Column(name = "oauth_id")
+    private String oAuthId;
+    @Column(name = "access_token")
+    private String accessToken;
+    @Column(name = "refresh_token")
+    private String refreshToken;
 
     @ManyToMany
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/IndoorMap.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/IndoorMap.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/IndoorMap.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,3 +1,4 @@
 package internettehnologii.imaps.backendRender.web.entities;
+import internettehnologii.imaps.backendRender.web.util.DTO.MapDTO;
 import jakarta.persistence.*;
 import lombok.Getter;
@@ -44,4 +45,5 @@
     private Boolean isPublished;
 
+
     @ManyToOne
     @JoinColumn(name = "usr_id",referencedColumnName = "id", nullable = false)
@@ -70,3 +72,14 @@
     }
 
+
+    public MapDTO toMapDTO(){
+        return  new MapDTO(getName(),
+                getMapType(),
+                getCreatedAt(),
+                getModifiedAt(),
+                getStatus().name(),
+                getFavouriteCount(),
+                getGmapsUrl());
+    }
+
 }
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/MAP_STATUS.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/MAP_STATUS.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/MAP_STATUS.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -4,4 +4,4 @@
     PUBLIC,
     PRIVATE,
-    INVALID,
+    PENDING,
 }
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/Report.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/Report.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/Report.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,46 @@
+package internettehnologii.imaps.backendRender.web.entities;
+
+import jakarta.persistence.*;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.time.LocalDateTime;
+
+@Entity
+@Table(name = "reports")
+@Getter
+@Setter
+public class Report {
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private int id;
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "user_id", nullable = false)
+    private IMapsUser user;
+
+    @ManyToOne(fetch = FetchType.LAZY)
+    @JoinColumn(name = "map_id", nullable = false)
+    private IndoorMap map;
+
+    @Column(nullable = false)
+    private String subject;
+
+    @Column(nullable = false, columnDefinition = "TEXT")
+    private String content;
+
+    @Column(name = "created_at", nullable = false)
+    private LocalDateTime createdAt;
+
+    public Report() {
+        this.createdAt = LocalDateTime.now();
+    }
+
+    public Report(IMapsUser user, IndoorMap map, String subject, String content) {
+        this.user = user;
+        this.map = map;
+        this.subject = subject;
+        this.content = content;
+        this.createdAt = LocalDateTime.now();
+    }
+}
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/repo/FloorRepository.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/repo/FloorRepository.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/repo/FloorRepository.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -22,6 +22,6 @@
     @Query("SELECT COUNT(f) > 0 FROM Floor f WHERE f.floorNumber = ?1 AND f.indoorMap = ?2")
     boolean existsFloorForMap(Integer floorNumber, IndoorMap indoorMap);
+    void deleteFloorByFloorNumberAndIndoorMap(Integer floorNumber,IndoorMap indoorMap);
 
-    void deleteFloorByFloorNumberAndIndoorMap(Integer floorNumber,IndoorMap indoorMap);
     Optional<Floor> findFloorByFloorNumberAndIndoorMap(Integer floorNumber,IndoorMap indoorMap);
 }
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/repo/ReportRepository.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/repo/ReportRepository.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/repo/ReportRepository.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,9 @@
+package internettehnologii.imaps.backendRender.web.repo;
+
+import internettehnologii.imaps.backendRender.web.entities.Report;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface ReportRepository extends JpaRepository<Report, Integer> {
+}
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/repo/UserRepository.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/repo/UserRepository.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/repo/UserRepository.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -6,4 +6,5 @@
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
 import java.util.Optional;
 
@@ -25,3 +26,8 @@
     value = "SELECT * FROM users u WHERE u.id= ?1")
     Optional<IMapsUser> getUserById(Long usrid);
+    @Query(value = "FROM IMapsUser u WHERE u.oAuthId = ?1")
+    Optional<IMapsUser> getUserByOAuthId(String oauthid);
+    @Query(nativeQuery = true,
+            value = "SELECT u.* FROM users u LEFT JOIN users_roles ur on u.id = ur.user_id where ur.role_id = 3;")
+    Optional<List<IMapsUser>> getAllAdmins();
 }
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/security/CorsConfigurationImpl.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/security/CorsConfigurationImpl.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/security/CorsConfigurationImpl.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,57 @@
+package internettehnologii.imaps.backendRender.web.security;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Primary;
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Component;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.CorsConfigurationSource;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+
+@Component
+public class CorsConfigurationImpl {
+    private final CorsConfigurationSource corsConfigurationSource;
+
+    public CorsConfigurationImpl(CorsConfigurationSource corsConfigurationSource) {
+        this.corsConfigurationSource = corsConfigurationSource;
+    }
+
+    @Bean
+    @Profile("dev")
+    @Primary
+    public CorsConfigurationSource corsConfigurationSourceDev() {
+        CorsConfiguration configuration = new CorsConfiguration();
+        configuration.addAllowedOrigin("http://localhost:5173");
+        configuration.addAllowedMethod("*");
+        configuration.addAllowedHeader("*");
+        configuration.addAllowedHeader("*");
+        configuration.setAllowCredentials(true);
+
+        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+        source.registerCorsConfiguration("/**", configuration);
+
+        return source;
+    }
+
+    @Bean
+    @Profile("prod")
+    @Primary
+    public CorsConfigurationSource corsConfigurationSourceProd() {
+        CorsConfiguration configuration = new CorsConfiguration();
+        configuration.addAllowedOrigin("http://localhost");
+        configuration.addAllowedOrigin("https://imaps.mk");
+        configuration.addAllowedOrigin("https://www.imaps.mk");
+        configuration.addAllowedMethod("*");
+        configuration.addAllowedHeader("*");
+        configuration.setAllowCredentials(true);
+
+        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+        source.registerCorsConfiguration("/**", configuration);
+
+        return source;
+    }
+
+    public CorsConfigurationSource getCorsConfigurationSource() {
+        return corsConfigurationSource;
+    }
+}
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/security/JwtFilter.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/security/JwtFilter.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/security/JwtFilter.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -37,5 +37,9 @@
     protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
         System.out.println(request.getRequestURI());
-        if(request.getRequestURI().contains("/login") || request.getRequestURI().contains("/register")) {
+        if(
+                request.getRequestURI().contains("/login") ||
+                        request.getRequestURI().contains("/register") ||
+                        request.getMethod().equals("OPTIONS")
+        ) {
             filterChain.doFilter(request, response);
         }
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/security/WebSecurityConfig.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/security/WebSecurityConfig.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/security/WebSecurityConfig.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -5,4 +5,6 @@
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.context.annotation.Profile;
 import org.springframework.security.authentication.AuthenticationManager;
 import org.springframework.security.authentication.AuthenticationProvider;
@@ -15,4 +17,5 @@
 import org.springframework.security.config.http.SessionCreationPolicy;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.security.web.SecurityFilterChain;
 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
@@ -28,6 +31,14 @@
     private MapUserDetailsService userDetailsService;
 
+    private final PasswordEncoder passwordEncoder;
+
     @Autowired
     private JwtFilter jwtFilter;
+    private final CorsConfigurationImpl corsConfiguration;
+
+    public WebSecurityConfig(PasswordEncoder passwordEncoder, CorsConfigurationImpl corsConfiguration) {
+        this.passwordEncoder = passwordEncoder;
+        this.corsConfiguration = corsConfiguration;
+    }
 
     @Bean
@@ -35,15 +46,13 @@
          http
                  .csrf(AbstractHttpConfigurer::disable)
-                 .cors(Customizer.withDefaults())
+                 .cors(cors -> cors.configurationSource(corsConfiguration.corsConfigurationSourceDev()))
                  .authorizeHttpRequests(request ->
-                         request.requestMatchers("/protected/**")
-                         .hasRole("USER")
-                         .requestMatchers("/api/admin/**")
-                         .hasRole("ADMIN")
-                         .anyRequest()
-                         .permitAll())
+                         request
+                                 .requestMatchers("/protected/**").hasRole("USER")
+                                 .requestMatchers("/api/admin/**").hasRole("ADMIN")
+                                 .anyRequest().permitAll())
+
                  .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
                  .addFilterBefore(jwtFilter, UsernamePasswordAuthenticationFilter.class);
-         
 
         return http.build();
@@ -51,18 +60,4 @@
 
 
-    @Bean
-    public CorsConfigurationSource corsConfigurationSource() {
-        CorsConfiguration configuration = new CorsConfiguration();
-        configuration.addAllowedOrigin("http://localhost:5173/");
-        configuration.addAllowedMethod("*");
-        configuration.addAllowedHeader("*");
-        configuration.addAllowedHeader("*");
-        configuration.setAllowCredentials(true);
-
-        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-        source.registerCorsConfiguration("/**", configuration);
-
-        return source;
-    }
 
 
@@ -70,5 +65,5 @@
     public AuthenticationProvider authenticationProvider() {
         DaoAuthenticationProvider daoAuthenticationProvider = new DaoAuthenticationProvider();
-        daoAuthenticationProvider.setPasswordEncoder(new BCryptPasswordEncoder(12));
+        daoAuthenticationProvider.setPasswordEncoder(passwordEncoder);
         daoAuthenticationProvider.setUserDetailsService(userDetailsService);
         return daoAuthenticationProvider;
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/GitHubOAuthService.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/GitHubOAuthService.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/GitHubOAuthService.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,87 @@
+package internettehnologii.imaps.backendRender.web.service.impl;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import internettehnologii.imaps.backendRender.web.controllers.InvalidStateException;
+import internettehnologii.imaps.backendRender.web.entities.IMapsUser;
+import internettehnologii.imaps.backendRender.web.entities.RBA.Role;
+import internettehnologii.imaps.backendRender.web.repo.RoleRepository;
+import internettehnologii.imaps.backendRender.web.repo.UserRepository;
+import internettehnologii.imaps.backendRender.web.service.interfaces.OAuthService;
+import internettehnologii.imaps.backendRender.web.util.DTO.GitHubUserInfo;
+import internettehnologii.imaps.backendRender.web.util.DTO.UserAuthSuccessDTO;
+import internettehnologii.imaps.backendRender.web.util.OAuthProviders;
+import internettehnologii.imaps.backendRender.web.util.UserPrincipal;
+import jakarta.transaction.Transactional;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.stereotype.Service;
+
+import javax.management.relation.RoleNotFoundException;
+import java.util.Optional;
+
+@Service("githubOAuth")
+public class GitHubOAuthService implements OAuthService {
+    private final UserRepository userRepository;
+    private final PasswordEncoder passwordEncoder;
+    private final JWTService jwtService;
+    private final RoleRepository roleRepository;
+
+    public GitHubOAuthService(UserRepository userRepository, PasswordEncoder passwordEncoder, JWTService jwtService, RoleRepository roleRepository) {
+        this.userRepository = userRepository;
+        this.passwordEncoder = passwordEncoder;
+        this.jwtService = jwtService;
+        this.roleRepository = roleRepository;
+    }
+
+
+    @Override
+    @Transactional
+    public UserAuthSuccessDTO login(String userInfo, String accessToken) {
+        ObjectMapper mapper = new ObjectMapper();
+        GitHubUserInfo oAuthUserInfo;
+
+        try {
+            oAuthUserInfo = mapper.readValue(userInfo, GitHubUserInfo.class);
+        } catch (JsonProcessingException e) {
+            throw new RuntimeException("Failed to parse GitHub user info.", e);
+        }
+
+        Optional<IMapsUser> userOpt = userRepository.getUserByOAuthId(oAuthUserInfo.getId());
+        IMapsUser user = userOpt.orElseGet(() -> createNewUser(oAuthUserInfo));
+        user.setAccessToken(passwordEncoder.encode(accessToken));
+        userRepository.save(user);
+
+        String token = jwtService.generateToken(new UserPrincipal(user));
+
+        return new UserAuthSuccessDTO(
+                token,
+                user.getUsername(),
+                jwtService.getAuthorities(token).toString()
+        );
+    }
+
+    private IMapsUser createNewUser(GitHubUserInfo oAuthUserInfo) {
+        IMapsUser newUser = new IMapsUser();
+
+        newUser.setEmail(oAuthUserInfo.getEmail());
+        newUser.setOAuthId(oAuthUserInfo.getId());
+        newUser.setOAuthProvider(OAuthProviders.GITHUB.name());
+        newUser.setUsername(generateUniqueUsername(oAuthUserInfo));
+
+        Role userRole = roleRepository.findByName("USER")
+                .orElseThrow(() -> new RuntimeException("User role not found."));
+
+        userRole.getUsers().add(newUser);
+        newUser.getRoles().add(userRole);
+
+        return newUser;
+    }
+
+    private String generateUniqueUsername(GitHubUserInfo oAuthUserInfo) {
+        String login = oAuthUserInfo.getLogin();
+        String idSubstring = oAuthUserInfo.getId()
+                .substring(login.length() - 3, login.length() - 1);
+        return login + idSubstring;
+    }
+
+}
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/GoogleOAuthService.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/GoogleOAuthService.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/GoogleOAuthService.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,84 @@
+package internettehnologii.imaps.backendRender.web.service.impl;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import internettehnologii.imaps.backendRender.web.entities.IMapsUser;
+import internettehnologii.imaps.backendRender.web.entities.RBA.Role;
+import internettehnologii.imaps.backendRender.web.repo.RoleRepository;
+import internettehnologii.imaps.backendRender.web.repo.UserRepository;
+import internettehnologii.imaps.backendRender.web.service.interfaces.OAuthService;
+import internettehnologii.imaps.backendRender.web.util.DTO.GitHubUserInfo;
+import internettehnologii.imaps.backendRender.web.util.DTO.GoogleUserInfo;
+import internettehnologii.imaps.backendRender.web.util.DTO.UserAuthSuccessDTO;
+import internettehnologii.imaps.backendRender.web.util.OAuthProviders;
+import internettehnologii.imaps.backendRender.web.util.UserPrincipal;
+import jakarta.transaction.Transactional;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.stereotype.Service;
+
+import java.util.Optional;
+
+@Service("googleOAuth")
+public class GoogleOAuthService implements OAuthService {
+    private final UserRepository userRepository;
+    private final PasswordEncoder passwordEncoder;
+    private final JWTService jwtService;
+    private final RoleRepository roleRepository;
+
+    public GoogleOAuthService(UserRepository userRepository, PasswordEncoder passwordEncoder, JWTService jwtService, RoleRepository roleRepository) {
+        this.userRepository = userRepository;
+        this.passwordEncoder = passwordEncoder;
+        this.jwtService = jwtService;
+        this.roleRepository = roleRepository;
+    }
+
+    @Override
+    @Transactional
+    public UserAuthSuccessDTO login(String userInfo, String accessToken) {
+        ObjectMapper mapper = new ObjectMapper();
+        GoogleUserInfo oAuthUserInfo;
+
+        try {
+            oAuthUserInfo = mapper.readValue(userInfo, GoogleUserInfo.class);
+        } catch (JsonProcessingException e) {
+            throw new RuntimeException("Failed to parse Google user info.", e);
+        }
+
+        Optional<IMapsUser> userOpt = userRepository.getUserByOAuthId(oAuthUserInfo.getId());
+        IMapsUser user = userOpt.orElseGet(() -> createNewUser(oAuthUserInfo));
+        user.setAccessToken(passwordEncoder.encode(accessToken));
+        userRepository.save(user);
+
+        String token = jwtService.generateToken(new UserPrincipal(user));
+
+        return new UserAuthSuccessDTO(
+                token,
+                user.getUsername(),
+                jwtService.getAuthorities(token).toString()
+        );
+    }
+
+    private IMapsUser createNewUser(GoogleUserInfo oAuthUserInfo) {
+        IMapsUser newUser = new IMapsUser();
+
+        newUser.setEmail(oAuthUserInfo.getEmail());
+        newUser.setOAuthId(oAuthUserInfo.getId());
+        newUser.setOAuthProvider(OAuthProviders.GOOGLE.name());
+        newUser.setUsername(generateUniqueUsername(oAuthUserInfo));
+
+        Role userRole = roleRepository.findByName("USER")
+                .orElseThrow(() -> new RuntimeException("User role not found."));
+
+        userRole.getUsers().add(newUser);
+        newUser.getRoles().add(userRole);
+
+        return newUser;
+    }
+
+    private String generateUniqueUsername(GoogleUserInfo oAuthUserInfo) {
+        String username = oAuthUserInfo.getName();
+        String idSubstring = oAuthUserInfo.getId()
+                .substring(username.length() - 3, username.length() - 1);
+        return username + idSubstring;
+    }
+}
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/MapServiceImpl.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/MapServiceImpl.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/MapServiceImpl.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,5 +1,8 @@
 package internettehnologii.imaps.backendRender.web.service.impl;
 
-import internettehnologii.imaps.backendRender.web.entities.*;
+import internettehnologii.imaps.backendRender.web.entities.Floor;
+import internettehnologii.imaps.backendRender.web.entities.IMapsUser;
+import internettehnologii.imaps.backendRender.web.entities.IndoorMap;
+import internettehnologii.imaps.backendRender.web.entities.MAP_STATUS;
 import internettehnologii.imaps.backendRender.web.exceptions.MapNameTakenException;
 import internettehnologii.imaps.backendRender.web.exceptions.MapNotFoundException;
@@ -8,4 +11,7 @@
 import internettehnologii.imaps.backendRender.web.repo.UserRepository;
 import internettehnologii.imaps.backendRender.web.service.interfaces.MapService;
+import internettehnologii.imaps.backendRender.web.util.DTO.EditMapDTO;
+import internettehnologii.imaps.backendRender.web.util.DTO.MapDTO;
+import jakarta.transaction.Transactional;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
@@ -31,5 +37,5 @@
 
     @Override
-    public void createMap(String mapName,String mapType, String username) {
+    public void createMap(String mapName, String username) {
 
         Optional<IMapsUser> user = userRepository.findUserByName(username);
@@ -38,5 +44,5 @@
             throw new MapNameTakenException("Map with name " + mapName + " already exists");
 
-        if(user.isEmpty()){
+        if (user.isEmpty()) {
             throw new UsernameNotFoundException("User " + username + " not found");
         }
@@ -58,4 +64,19 @@
     public void updateMap(IndoorMap indoorMap) {
         mapRepository.save(indoorMap);
+    }
+
+    @Transactional
+    @Override
+    public MapDTO updateMapInfo(EditMapDTO editMapDTO) {
+        IndoorMap indoorMap = mapRepository.getIndoorMapByName(editMapDTO.getInitialName()).orElseThrow(() -> new MapNotFoundException("Map with name " + editMapDTO.getInitialName() + " not found"));
+        if (mapRepository.existsByName(editMapDTO.getName()) && !Objects.equals(editMapDTO.getInitialName(), editMapDTO.getName())) {
+            throw new MapNameTakenException("Map with name " + editMapDTO.getName() + " already exists");
+        }
+
+        indoorMap.setName(editMapDTO.getName());
+        indoorMap.setGmapsUrl(editMapDTO.getGmapsUrl());
+//        indoorMap.setMapType(editMapDTO.getType()); //TODO
+        mapRepository.save(indoorMap);
+        return indoorMap.toMapDTO();
     }
 
@@ -85,5 +106,5 @@
         boolean isAdmin = user.getRoles().stream().anyMatch(role -> Objects.equals(role.getName(), "ADMIN"));
 
-        if(isAdmin){
+        if (isAdmin) {
             return map;
         }
@@ -99,5 +120,5 @@
     @Override
     public IndoorMap getMapByName(String mapName) {
-       return mapRepository.getIndoorMapByName(mapName).orElseThrow(() -> new MapNotFoundException(mapName));
+        return mapRepository.getIndoorMapByName(mapName).orElseThrow(() -> new MapNotFoundException(mapName));
     }
 
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/OAuthStateStore.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/OAuthStateStore.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/OAuthStateStore.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,24 @@
+package internettehnologii.imaps.backendRender.web.service.impl;
+
+import internettehnologii.imaps.backendRender.web.service.interfaces.StateStore;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+@Service
+public class OAuthStateStore implements StateStore {
+
+    private final Map<String, Long> stateStore = new ConcurrentHashMap<>();
+
+    @Override
+    public void storeState(String state) {
+        stateStore.put(state, System.currentTimeMillis());
+    }
+
+    @Override
+    public boolean isValidState(String state) {
+        Long timestamp = stateStore.remove(state);
+        return timestamp != null && System.currentTimeMillis() - timestamp < 300000; // 5min
+    }
+}
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/PublishRequestServiceImpl.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/PublishRequestServiceImpl.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/PublishRequestServiceImpl.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -7,8 +7,13 @@
 import internettehnologii.imaps.backendRender.web.repo.MapRepository;
 import internettehnologii.imaps.backendRender.web.repo.PublishRequestRepository;
+import internettehnologii.imaps.backendRender.web.repo.UserRepository;
 import internettehnologii.imaps.backendRender.web.service.interfaces.MapService;
 import internettehnologii.imaps.backendRender.web.service.interfaces.PublishRequestService;
 import internettehnologii.imaps.backendRender.web.service.interfaces.UserService;
+import internettehnologii.imaps.backendRender.web.util.DTO.MapDTO;
 import internettehnologii.imaps.backendRender.web.util.DTO.PublishMapDTO;
+import jakarta.transaction.Transactional;
+import org.springframework.mail.SimpleMailMessage;
+import org.springframework.mail.javamail.JavaMailSender;
 import org.springframework.stereotype.Service;
 
@@ -22,14 +27,18 @@
     private final MapService mapService;
     private final UserService userService;
+    //private final JavaMailSender mailSender;
+    private final UserRepository userRepository;
 
-    public PublishRequestServiceImpl(PublishRequestRepository publishRequestRepository, MapRepository mapRepository, MapService mapService, UserService userService) {
+    public PublishRequestServiceImpl(PublishRequestRepository publishRequestRepository, MapRepository mapRepository, MapService mapService, UserService userService, UserRepository userRepository) {
         this.publishRequestRepository = publishRequestRepository;
         this.mapRepository = mapRepository;
         this.mapService = mapService;
         this.userService = userService;
+        this.userRepository = userRepository;
     }
 
     @Override
-    public void addPublishRequest(PublishMapDTO formData, IMapsUser user) {
+    @Transactional
+    public MapDTO addPublishRequest(PublishMapDTO formData, IMapsUser user) {
         Optional<PublishRequest> prOptional = publishRequestRepository.findById(formData.getId());
         PublishRequest pr;
@@ -41,20 +50,21 @@
             pr.setGMapsUrl(formData.getGoogleMapsUrl());
             pr.setMapType(formData.getMapType());
-            map.setStatus(MAP_STATUS.INVALID);
+            map.setStatus(MAP_STATUS.PENDING);
         } else {
             pr = new PublishRequest(formData.getName(), formData.getLastName(), formData.getGoogleMapsUrl(), formData.getMapType());
-
             pr.setMap(map);
             pr.setUser(user);
-            map.setStatus(MAP_STATUS.INVALID);
+            map.setStatus(MAP_STATUS.PENDING);
 
         }
         this.mapRepository.save(map);
         this.publishRequestRepository.save(pr);
+        sendMailToAdmins(user,pr);
+        return map.toMapDTO();
 
     }
 
     @Override
-    public void denyPublishRequest(int id) throws Exception {
+    public void denyPublishRequest(int id,String reason) throws Exception {
         PublishRequest pr = this.publishRequestRepository.findById(id).orElseThrow(Exception::new);
 
@@ -66,4 +76,12 @@
         this.publishRequestRepository.save(pr);
         this.mapRepository.save(map);
+
+//        SimpleMailMessage message = new SimpleMailMessage();
+//
+//        message.setTo(pr.getMap().getUser().getEmail());
+//        message.setSubject("Denied Publish Request");
+//        message.setText(String.format("Your publish request for map: %s has been denied." +
+//                "\nReason:\n%s",pr.getMap().getName(),reason));
+//        mailSender.send(message);
     }
 
@@ -77,6 +95,39 @@
 
     }
+    @Override
+    public void sendMailToAdmins(IMapsUser user, PublishRequest pr){
+//        System.out.println("test");
+//        SimpleMailMessage message = new SimpleMailMessage();
+//        Optional<List<IMapsUser>> adminsOpt = userRepository.getAllAdmins();
+//        adminsOpt.ifPresent(admins -> {
+//            admins.forEach(admin -> {
+//                message.setTo(admin.getEmail());
+//                message.setSubject("New Publish Request");
+//                String body = String.format(
+//                        """
+//                                Publish Request Details:
+//                                \tRequest Id: %s
+//                                \tMap Id: %s
+//                                \tMap Name: %s
+//
+//                                User Details:
+//                                \tId: %s
+//                                \tUsername: %s
+//                                \tEmail: %s
+//                                \tFirst Name: %s
+//                                \t Last Name: %s
+//                                """,
+//                        pr.getId(), pr.getMap().getId(),
+//                        pr.getMap().getName(),
+//                        user.getId(),user.getUsername(),user.getEmail(),
+//                        pr.getName(),pr.getLastName());
+//
+//                message.setText(body);
+//                mailSender.send(message);
+//            });
+//        });
 
-    // todo mail pustanje
+    }
+
 
     @Override
@@ -93,4 +144,11 @@
         this.publishRequestRepository.save(pr);
         this.mapRepository.save(map);
+
+//        SimpleMailMessage message = new SimpleMailMessage();
+//        message.setTo(pr.getMap().getUser().getEmail());
+//        message.setSubject("Approved Publish Request");
+//        message.setText(String.format("Your publish request for map: %s has been approved!\nYour map is now public. That means that anyone can view and use your map.\nThank you for building!",pr.getMap().getName()));
+//        mailSender.send(message);
+
     }
 
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/ReportServiceImpl.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/ReportServiceImpl.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/ReportServiceImpl.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,73 @@
+package internettehnologii.imaps.backendRender.web.service.impl;
+
+import internettehnologii.imaps.backendRender.web.entities.IMapsUser;
+import internettehnologii.imaps.backendRender.web.entities.Report;
+import internettehnologii.imaps.backendRender.web.repo.ReportRepository;
+import internettehnologii.imaps.backendRender.web.repo.UserRepository;
+import internettehnologii.imaps.backendRender.web.service.interfaces.ReportService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.mail.SimpleMailMessage;
+import org.springframework.mail.javamail.JavaMailSender;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Optional;
+
+
+@Service
+public class ReportServiceImpl implements ReportService {
+    private final ReportRepository reportRepository;
+    private final JavaMailSender mailSender;
+    private final UserRepository userRepository;
+
+
+    public ReportServiceImpl(ReportRepository reportRepository, JavaMailSender mailSender, UserRepository userRepository) {
+        this.reportRepository = reportRepository;
+        this.mailSender = mailSender;
+        this.userRepository = userRepository;
+    }
+
+
+    @Override
+    public void saveReport(Report report) {
+        reportRepository.save(report);
+        //sendMailToAdmins(report);
+    }
+
+    @Override
+    public List<Report> getReports() {
+        return reportRepository.findAll();
+    }
+
+    public void sendMailToAdmins(Report report) {
+        SimpleMailMessage message = new SimpleMailMessage();
+        Optional<List<IMapsUser>> adminsOpt = userRepository.getAllAdmins();
+        System.out.println("MAIL " + report);
+        adminsOpt.ifPresent(admins -> {
+            admins.forEach(admin -> {
+                message.setTo(admin.getEmail());
+                message.setSubject("New Report Submitted");
+                String body = String.format(
+                        """
+                        A new report has been submitted:
+                        
+                        Report Details:
+                        \tReport Id: %s
+                        \tSubject: %s
+                        \tContent: %s
+                        \tSubmitted By: %s
+
+                        """,
+                        report.getId(),
+                        report.getSubject(),
+                        report.getContent(),
+                        report.getUser() != null ? report.getUser().getUsername() : "Unknown"
+                );
+                message.setText(body);
+                System.out.println("MESSAGE: " + message);
+                mailSender.send(message);
+            });
+        });
+    }
+
+}
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/UserServiceImpl.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/UserServiceImpl.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/UserServiceImpl.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -21,4 +21,5 @@
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+import org.springframework.security.crypto.password.PasswordEncoder;
 import org.springframework.stereotype.Service;
 
@@ -31,5 +32,7 @@
     private final UserRepository userRepository;
 
-    private final BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder(12);
+    @Autowired
+    private PasswordEncoder passwordEncoder;
+
     @Autowired
     private JWTService jwtService;
@@ -56,5 +59,5 @@
         });
 
-        user.setPassword(bCryptPasswordEncoder.encode(user.getPassword()));
+        user.setPassword(passwordEncoder.encode(user.getPassword()));
 
         Role userRole = roleRepository.findByName("USER").orElseThrow(RoleNotFoundException::new);
@@ -84,5 +87,5 @@
 
     @Override
-    public void addToFavorites(IMapsUser user, IndoorMap map) {
+    public void addFavoriteMap(IMapsUser user, IndoorMap map) {
         user.getFavoriteMaps().add(map);
         userRepository.save(user);
@@ -90,5 +93,5 @@
 
     @Override
-    public void removeFromFavorites(IMapsUser user, IndoorMap map) {
+    public void removeFavoriteMap(IMapsUser user, IndoorMap map) {
         boolean removed = user.getFavoriteMaps().remove(map);
         if(!removed) throw new MapNotFoundException("Map not found. " + map.getName());
@@ -104,4 +107,3 @@
 
 
-
 }
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/MapService.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/MapService.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/MapService.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -4,10 +4,13 @@
 import internettehnologii.imaps.backendRender.web.entities.MAP_STATUS;
 import internettehnologii.imaps.backendRender.web.entities.RoomType;
+import internettehnologii.imaps.backendRender.web.util.DTO.EditMapDTO;
+import internettehnologii.imaps.backendRender.web.util.DTO.MapDTO;
 
 import java.util.List;
 
 public interface MapService {
-    void createMap(String mapName, String mapType, String username);
+    void createMap(String mapName, String username);
     void updateMap(IndoorMap indoorMap);
+    MapDTO updateMapInfo(EditMapDTO editMapDTO);
     void deleteMap(IndoorMap indoorMap);
     List<IndoorMap> getAllMapsForUser(String username);
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/OAuthService.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/OAuthService.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/OAuthService.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,7 @@
+package internettehnologii.imaps.backendRender.web.service.interfaces;
+
+import internettehnologii.imaps.backendRender.web.util.DTO.UserAuthSuccessDTO;
+
+public interface OAuthService {
+    UserAuthSuccessDTO login(String userInfo, String accessToken);
+}
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/PublishRequestService.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/PublishRequestService.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/PublishRequestService.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -3,4 +3,5 @@
 import internettehnologii.imaps.backendRender.web.entities.IMapsUser;
 import internettehnologii.imaps.backendRender.web.entities.PublishRequest;
+import internettehnologii.imaps.backendRender.web.util.DTO.MapDTO;
 import internettehnologii.imaps.backendRender.web.util.DTO.PublishMapDTO;
 
@@ -8,6 +9,6 @@
 
 public interface PublishRequestService {
-    void addPublishRequest(PublishMapDTO publishRequestDTO, IMapsUser user);
-    void denyPublishRequest(int id) throws Exception;
+    MapDTO addPublishRequest(PublishMapDTO publishRequestDTO, IMapsUser user);
+    void denyPublishRequest(int id,String reason) throws Exception;
     List<PublishRequest> getAllPublishRequests();
     void save(PublishRequest publishRequest);
@@ -16,3 +17,4 @@
     PublishRequest getPublishRequestByMapName(String mapName);
     void editPublishRequest(PublishRequest publishRequest);
+    void sendMailToAdmins(IMapsUser user,PublishRequest pr);
 }
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/ReportService.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/ReportService.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/ReportService.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,11 @@
+package internettehnologii.imaps.backendRender.web.service.interfaces;
+
+import internettehnologii.imaps.backendRender.web.entities.Report;
+
+import java.util.List;
+
+public interface ReportService {
+
+    public void saveReport(Report report);
+    public List<Report> getReports();
+}
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/StateStore.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/StateStore.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/StateStore.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,6 @@
+package internettehnologii.imaps.backendRender.web.service.interfaces;
+
+public interface StateStore {
+    void storeState(String state);
+    boolean isValidState(String state);
+}
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/UserService.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/UserService.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/UserService.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -7,11 +7,10 @@
 
 import javax.management.relation.RoleNotFoundException;
-import javax.naming.AuthenticationException;
 
 public interface UserService {
     IMapsUser register(IMapsUser user) throws RoleNotFoundException;
     UserAuthSuccessDTO login(UserLoginDTO user) throws Exception;
-    void addToFavorites(IMapsUser user, IndoorMap map);
-    void removeFromFavorites(IMapsUser user, IndoorMap map);
+    void addFavoriteMap(IMapsUser user, IndoorMap map);
+    void removeFavoriteMap(IMapsUser user, IndoorMap map);
     IMapsUser getUser(String username);
 }
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/CreateMapDTO.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/CreateMapDTO.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/CreateMapDTO.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -10,4 +10,4 @@
 public class CreateMapDTO {
     private String name;
-    private String mapType;
+    public CreateMapDTO() {}
 }
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/EditMapDTO.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/EditMapDTO.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/EditMapDTO.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,17 @@
+package internettehnologii.imaps.backendRender.web.util.DTO;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+public class EditMapDTO {
+    String initialName;
+    String name;
+    String gmapsUrl;
+    String type;
+}
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/GitHubUserInfo.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/GitHubUserInfo.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/GitHubUserInfo.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,36 @@
+package internettehnologii.imaps.backendRender.web.util.DTO;
+
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class GitHubUserInfo {
+    @JsonProperty("login")
+    private String login;
+
+    @JsonProperty("id")
+    private String id;
+
+    @JsonProperty("name")
+    private String name;
+
+    @JsonProperty("email")
+    private String email;
+
+    @JsonProperty("avatar_url")
+    private String avatarUrl;
+
+    @Override
+    public String toString() {
+        return "UserInfo{" +
+                "login='" + login + '\'' +
+                ", id=" + id +
+                ", name='" + name + '\'' +
+                ", email='" + email + '\'' +
+                ", avatarUrl='" + avatarUrl + '\'' +
+                '}';
+    }
+}
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/GoogleUserInfo.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/GoogleUserInfo.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/GoogleUserInfo.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,23 @@
+package internettehnologii.imaps.backendRender.web.util.DTO;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class GoogleUserInfo {
+
+    @JsonProperty("sub")
+    private String id;
+
+    @JsonProperty("name")
+    private String name;
+
+    @JsonProperty("email")
+    private String email;
+
+    @JsonProperty("picture")
+    private String picture;
+
+}
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/ReportDTO.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/ReportDTO.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/ReportDTO.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,14 @@
+package internettehnologii.imaps.backendRender.web.util.DTO;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@AllArgsConstructor
+@Data
+public class ReportDTO {
+    String username;
+    String mapName;
+    String subject;
+    String content;
+    String date;
+}
Index: imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/OAuthProviders.java
===================================================================
--- imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/OAuthProviders.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/OAuthProviders.java	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,6 @@
+package internettehnologii.imaps.backendRender.web.util;
+
+public enum OAuthProviders {
+    GITHUB,
+    GOOGLE
+}
Index: imaps-backend/backendRender/src/main/resources/application-dev.properties
===================================================================
--- imaps-backend/backendRender/src/main/resources/application-dev.properties	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/resources/application-dev.properties	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,8 @@
+github.client.id=${GITHUB_CLIENT_ID}
+github.client.secret=${GITHUB_CLIENT_SECRET}
+github.redirect.uri=http://${BACKEND_IP}:${BACKEND_PORT}/api/oauth/callback/github
+google.redirect.uri=http://${BACKEND_IP}:${BACKEND_PORT}/api/oauth/callback/google
+google.client.id=${GOOGLE_CLIENT_ID}
+google.client.secret=${GOOGLE_CLIENT_SECRET}
+
+spring.datasource.url=jdbc:postgresql://localhost:5432/imaps_prod
Index: imaps-backend/backendRender/src/main/resources/application-prod.properties
===================================================================
--- imaps-backend/backendRender/src/main/resources/application-prod.properties	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/src/main/resources/application-prod.properties	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,8 @@
+github.client.id=${GITHUB_CLIENT_ID}
+github.client.secret=${GITHUB_CLIENT_SECRET}
+github.redirect.uri=https://imaps.mk/api/oauth/callback/github
+google.redirect.uri=https://imaps.mk/api/oauth/callback/google
+google.client.id=${GOOGLE_CLIENT_ID}
+google.client.secret=${GOOGLE_CLIENT_SECRET}
+
+spring.datasource.url=jdbc:postgresql://${DB_IP}:${DB_PORT}/imaps_prod
Index: imaps-backend/backendRender/src/main/resources/application.properties
===================================================================
--- imaps-backend/backendRender/src/main/resources/application.properties	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ imaps-backend/backendRender/src/main/resources/application.properties	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -1,4 +1,3 @@
-spring.application.name=backendRender
-spring.datasource.url=jdbc:postgresql://localhost:5432/imaps_prod
+spring.application.name=imaps-backend
 spring.datasource.username=${DB_USER}
 spring.datasource.password=${DB_PASS}
@@ -8,4 +7,14 @@
 spring.jpa.properties.hibernate.format_sql=true
 
+
+
+spring.mail.host=smtp.gmail.com
+spring.mail.port=587
+spring.mail.username=${MAIL_NAME}
+spring.mail.password=${MAIL_PASS}
+spring.mail.properties.mail.smtp.auth=true
+spring.mail.properties.mail.smtp.starttls.enable=true
+
+spring.profiles.active=dev
 logging.level.org.springframework.web=DEBUG
 
Index: imaps-backend/backendRender/src/test/java/internettehnologii/imaps/backendRender/RouteGraphTest.java
===================================================================
--- imaps-backend/backendRender/src/test/java/internettehnologii/imaps/backendRender/RouteGraphTest.java	(revision 0c6b92add4cfaedcb91bcd37b45849f142f7d152)
+++ 	(revision )
@@ -1,41 +1,0 @@
-package internettehnologii.imaps.backendRender;
-
-import internettehnologii.imaps.backendRender.graph.Coordinates;
-import internettehnologii.imaps.backendRender.graph.MapNode;
-import internettehnologii.imaps.backendRender.graph.RouteGraph;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.BeforeEach;
-
-import java.util.*;
-import java.util.List;
-
-import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat;
-
-class RouteGraphTest {
-
-    private RouteGraph routeGraph;
-
-    @BeforeEach
-    void setUp() {
-        MapNode nodeA = new MapNode("A", new Coordinates<>(0.0, 0.0), Arrays.asList("B"));
-        MapNode nodeB = new MapNode("B", new Coordinates<>(5.0, 7.0), Arrays.asList("A","C","D"));
-        MapNode nodeC = new MapNode("C", new Coordinates<>(9.0, 7.0), Arrays.asList("B","D"));
-        MapNode nodeD = new MapNode("D", new Coordinates<>(9.0, 12.0), Arrays.asList("B","C"));
-
-        List<MapNode> nodes = Arrays.asList(nodeA, nodeB, nodeC,nodeD);
-        routeGraph = new RouteGraph();
-        routeGraph.loadNodeNames(nodes);
-    }
-
-    @Test
-    void testFindRouteBetweenConnectedNodes() {
-        List<MapNode> path = routeGraph.findRoute("D", "A");
-        for (MapNode node : path) {
-            System.out.print(
-                    node.getName() + " ---> "
-            );
-        }
-        assertThat(path).isNotEmpty();
-        //assertThat(path).extracting(MapNode::getName).containsExactly("A", "B", "C");
-    }
-}
Index: imaps-backend/backendRender/target/classes/application-dev.properties
===================================================================
--- imaps-backend/backendRender/target/classes/application-dev.properties	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/target/classes/application-dev.properties	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,8 @@
+github.client.id=${GITHUB_CLIENT_ID}
+github.client.secret=${GITHUB_CLIENT_SECRET}
+github.redirect.uri=http://${BACKEND_IP}:${BACKEND_PORT}/api/oauth/callback/github
+google.redirect.uri=http://${BACKEND_IP}:${BACKEND_PORT}/api/oauth/callback/google
+google.client.id=${GOOGLE_CLIENT_ID}
+google.client.secret=${GOOGLE_CLIENT_SECRET}
+
+spring.datasource.url=jdbc:postgresql://localhost:5432/imaps_prod
Index: imaps-backend/backendRender/target/classes/application-prod.properties
===================================================================
--- imaps-backend/backendRender/target/classes/application-prod.properties	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/target/classes/application-prod.properties	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,8 @@
+github.client.id=${GITHUB_CLIENT_ID}
+github.client.secret=${GITHUB_CLIENT_SECRET}
+github.redirect.uri=https://imaps.mk/api/oauth/callback/github
+google.redirect.uri=https://imaps.mk/api/oauth/callback/google
+google.client.id=${GOOGLE_CLIENT_ID}
+google.client.secret=${GOOGLE_CLIENT_SECRET}
+
+spring.datasource.url=jdbc:postgresql://${DB_IP}:${DB_PORT}/imaps_prod
Index: imaps-backend/backendRender/target/classes/application.properties
===================================================================
--- imaps-backend/backendRender/target/classes/application.properties	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/target/classes/application.properties	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,20 @@
+spring.application.name=imaps-backend
+spring.datasource.username=${DB_USER}
+spring.datasource.password=${DB_PASS}
+spring.jpa.hibernate.ddl-auto=validate
+spring.jpa.show-sql=true
+spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
+spring.jpa.properties.hibernate.format_sql=true
+
+
+
+spring.mail.host=smtp.gmail.com
+spring.mail.port=587
+spring.mail.username=${MAIL_NAME}
+spring.mail.password=${MAIL_PASS}
+spring.mail.properties.mail.smtp.auth=true
+spring.mail.properties.mail.smtp.starttls.enable=true
+
+spring.profiles.active=dev
+logging.level.org.springframework.web=DEBUG
+
Index: imaps-backend/backendRender/target/classes/templates/test.html
===================================================================
--- imaps-backend/backendRender/target/classes/templates/test.html	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/target/classes/templates/test.html	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Test</title>
+</head>
+<body>
+asdasd
+</body>
+</html>
Index: imaps-backend/backendRender/target/maven-archiver/pom.properties
===================================================================
--- imaps-backend/backendRender/target/maven-archiver/pom.properties	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/target/maven-archiver/pom.properties	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,3 @@
+artifactId=imaps-backend
+groupId=internettehnologii.imaps
+version=0.0.1-SNAPSHOT
Index: imaps-backend/backendRender/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
===================================================================
--- imaps-backend/backendRender/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,87 @@
+internettehnologii/imaps/backendRender/web/repo/PublishRequestRepository.class
+internettehnologii/imaps/backendRender/web/service/interfaces/StateStore.class
+internettehnologii/imaps/backendRender/web/security/JwtFilter.class
+internettehnologii/imaps/backendRender/web/util/DTO/ReportDTO.class
+internettehnologii/imaps/backendRender/web/util/Util.class
+internettehnologii/imaps/backendRender/web/entities/RBA/Role.class
+internettehnologii/imaps/backendRender/web/service/interfaces/OAuthService.class
+internettehnologii/imaps/backendRender/web/controllers/MapViewController.class
+internettehnologii/imaps/backendRender/graph/exceptions/InvalidMapDataException.class
+internettehnologii/imaps/backendRender/web/util/OAuthProviders.class
+internettehnologii/imaps/backendRender/web/util/DTO/GoogleUserInfo.class
+internettehnologii/imaps/backendRender/web/util/DTO/AddRoomTypeDTO.class
+internettehnologii/imaps/backendRender/web/config/OAuthConfig.class
+internettehnologii/imaps/backendRender/web/entities/RBA/Permission.class
+internettehnologii/imaps/backendRender/web/repo/RoleRepository.class
+internettehnologii/imaps/backendRender/web/config/RoleConfig.class
+internettehnologii/imaps/backendRender/web/service/impl/OAuthStateStore.class
+internettehnologii/imaps/backendRender/web/service/impl/UserServiceImpl.class
+internettehnologii/imaps/backendRender/web/util/DTO/FloorDTO.class
+internettehnologii/imaps/backendRender/graph/MapNode.class
+internettehnologii/imaps/backendRender/web/entities/Floor.class
+internettehnologii/imaps/backendRender/web/service/impl/GitHubOAuthService.class
+internettehnologii/imaps/backendRender/graph/Shape.class
+internettehnologii/imaps/backendRender/web/entities/Report.class
+internettehnologii/imaps/backendRender/web/entities/IMapsUser.class
+internettehnologii/imaps/backendRender/web/service/impl/ReportServiceImpl.class
+internettehnologii/imaps/backendRender/web/service/interfaces/FloorService.class
+internettehnologii/imaps/backendRender/web/service/impl/GraphServiceImpl.class
+internettehnologii/imaps/backendRender/web/exceptions/UserNotFoundException.class
+internettehnologii/imaps/backendRender/web/service/impl/MapUserDetailsService.class
+internettehnologii/imaps/backendRender/web/service/interfaces/RoomTypeService.class
+internettehnologii/imaps/backendRender/web/util/DTO/UserAuthSuccessDTO.class
+internettehnologii/imaps/backendRender/web/entities/IndoorMap.class
+internettehnologii/imaps/backendRender/web/util/json/JsonMapData.class
+internettehnologii/imaps/backendRender/graph/Edge.class
+internettehnologii/imaps/backendRender/web/util/UserPrincipal.class
+internettehnologii/imaps/backendRender/web/service/interfaces/UserService.class
+internettehnologii/imaps/backendRender/web/service/impl/GoogleOAuthService.class
+internettehnologii/imaps/backendRender/web/repo/MapRepository.class
+internettehnologii/imaps/backendRender/web/util/DTO/UserMapDTO.class
+internettehnologii/imaps/backendRender/BackendRenderApplication.class
+internettehnologii/imaps/backendRender/web/util/DTO/RoomTypeDTO.class
+internettehnologii/imaps/backendRender/graph/Coordinates.class
+internettehnologii/imaps/backendRender/web/controllers/OAuthController.class
+internettehnologii/imaps/backendRender/graph/exceptions/NodeNotFoundException.class
+internettehnologii/imaps/backendRender/graph/MapNodeParser.class
+internettehnologii/imaps/backendRender/web/util/DTO/UserLoginDTO.class
+internettehnologii/imaps/backendRender/graph/exceptions/MapParseException.class
+internettehnologii/imaps/backendRender/web/service/impl/RoomTypeServiceImpl.class
+internettehnologii/imaps/backendRender/web/exceptions/MapNotFoundException.class
+internettehnologii/imaps/backendRender/web/security/WebSecurityConfig.class
+internettehnologii/imaps/backendRender/web/exceptions/FloorNotFoundException.class
+internettehnologii/imaps/backendRender/web/service/impl/PublishRequestServiceImpl.class
+internettehnologii/imaps/backendRender/web/exceptions/EmptyMapException.class
+internettehnologii/imaps/backendRender/web/exceptions/EmailTakenException.class
+internettehnologii/imaps/backendRender/graph/RouteGraph.class
+internettehnologii/imaps/backendRender/web/exceptions/UsernameTakenException.class
+internettehnologii/imaps/backendRender/web/controllers/InvalidStateException.class
+internettehnologii/imaps/backendRender/web/repo/RoomTypeRepository.class
+internettehnologii/imaps/backendRender/web/service/interfaces/MapService.class
+internettehnologii/imaps/backendRender/web/service/interfaces/PublishRequestService.class
+internettehnologii/imaps/backendRender/web/util/DTO/SaveMapDTO.class
+internettehnologii/imaps/backendRender/web/entities/PublishRequest.class
+internettehnologii/imaps/backendRender/web/entities/MAP_STATUS.class
+internettehnologii/imaps/backendRender/web/util/DTO/MapDTO.class
+internettehnologii/imaps/backendRender/web/controllers/MapDrawController.class
+internettehnologii/imaps/backendRender/web/repo/UserRepository.class
+internettehnologii/imaps/backendRender/web/service/interfaces/ReportService.class
+internettehnologii/imaps/backendRender/web/util/json/JsonNodeConverter.class
+internettehnologii/imaps/backendRender/web/service/impl/FloorServiceImpl.class
+internettehnologii/imaps/backendRender/web/entities/FloorId.class
+internettehnologii/imaps/backendRender/web/repo/FloorRepository.class
+internettehnologii/imaps/backendRender/web/controllers/AdminController.class
+internettehnologii/imaps/backendRender/web/service/interfaces/GraphService.class
+internettehnologii/imaps/backendRender/web/util/DTO/GitHubUserInfo.class
+internettehnologii/imaps/backendRender/web/controllers/AuthController.class
+internettehnologii/imaps/backendRender/web/util/DTO/CreateMapDTO.class
+internettehnologii/imaps/backendRender/web/security/CorsConfigurationImpl.class
+internettehnologii/imaps/backendRender/web/service/impl/JWTService.class
+internettehnologii/imaps/backendRender/web/entities/RoomType.class
+internettehnologii/imaps/backendRender/web/service/impl/MapServiceImpl.class
+internettehnologii/imaps/backendRender/web/repo/ReportRepository.class
+internettehnologii/imaps/backendRender/web/exceptions/MapNameTakenException.class
+internettehnologii/imaps/backendRender/ServletInitializer.class
+internettehnologii/imaps/backendRender/web/util/DTO/PublishMapDTO.class
+internettehnologii/imaps/backendRender/web/exceptions/InvalidParametersException.class
+internettehnologii/imaps/backendRender/web/exceptions/FloorAlreadyExistsException.class
Index: imaps-backend/backendRender/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
===================================================================
--- imaps-backend/backendRender/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,87 @@
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/BackendRenderApplication.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/ServletInitializer.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/graph/Coordinates.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/graph/Edge.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/graph/MapNode.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/graph/MapNodeParser.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/graph/RouteGraph.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/graph/Shape.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/graph/exceptions/InvalidMapDataException.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/graph/exceptions/MapParseException.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/graph/exceptions/NodeNotFoundException.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/config/OAuthConfig.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/config/RoleConfig.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/AdminController.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/AuthController.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/InvalidStateException.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/MapDrawController.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/MapViewController.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/controllers/OAuthController.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/Floor.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/FloorId.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/IMapsUser.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/IndoorMap.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/MAP_STATUS.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/PublishRequest.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/RBA/Permission.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/RBA/Role.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/Report.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/entities/RoomType.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/exceptions/EmailTakenException.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/exceptions/EmptyMapException.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/exceptions/FloorAlreadyExistsException.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/exceptions/FloorNotFoundException.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/exceptions/InvalidParametersException.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/exceptions/MapNameTakenException.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/exceptions/MapNotFoundException.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/exceptions/UserNotFoundException.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/exceptions/UsernameTakenException.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/repo/FloorRepository.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/repo/MapRepository.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/repo/PublishRequestRepository.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/repo/ReportRepository.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/repo/RoleRepository.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/repo/RoomTypeRepository.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/repo/UserRepository.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/security/CorsConfigurationImpl.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/security/JwtFilter.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/security/WebSecurityConfig.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/FloorServiceImpl.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/GitHubOAuthService.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/GoogleOAuthService.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/GraphServiceImpl.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/JWTService.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/MapServiceImpl.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/MapUserDetailsService.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/OAuthStateStore.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/PublishRequestServiceImpl.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/ReportServiceImpl.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/RoomTypeServiceImpl.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/impl/UserServiceImpl.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/FloorService.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/GraphService.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/MapService.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/OAuthService.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/PublishRequestService.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/ReportService.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/RoomTypeService.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/StateStore.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/service/interfaces/UserService.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/AddRoomTypeDTO.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/CreateMapDTO.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/FloorDTO.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/GitHubUserInfo.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/GoogleUserInfo.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/MapDTO.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/PublishMapDTO.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/ReportDTO.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/RoomTypeDTO.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/SaveMapDTO.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/UserAuthSuccessDTO.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/UserLoginDTO.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/DTO/UserMapDTO.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/OAuthProviders.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/UserPrincipal.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/Util.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/json/JsonMapData.java
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/main/java/internettehnologii/imaps/backendRender/web/util/json/JsonNodeConverter.java
Index: imaps-backend/backendRender/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
===================================================================
--- imaps-backend/backendRender/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+internettehnologii/imaps/backendRender/BackendRenderApplicationTests.class
Index: imaps-backend/backendRender/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
===================================================================
--- imaps-backend/backendRender/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,1 @@
+/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/src/test/java/internettehnologii/imaps/backendRender/BackendRenderApplicationTests.java
Index: imaps-backend/backendRender/target/surefire-reports/TEST-internettehnologii.imaps.backendRender.BackendRenderApplicationTests.xml
===================================================================
--- imaps-backend/backendRender/target/surefire-reports/TEST-internettehnologii.imaps.backendRender.BackendRenderApplicationTests.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/target/surefire-reports/TEST-internettehnologii.imaps.backendRender.BackendRenderApplicationTests.xml	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd" version="3.0" name="internettehnologii.imaps.backendRender.BackendRenderApplicationTests" time="5.402" tests="1" errors="0" skipped="0" failures="0">
+  <properties>
+    <property name="java.specification.version" value="21"/>
+    <property name="sun.jnu.encoding" value="UTF-8"/>
+    <property name="java.class.path" value="/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/target/test-classes:/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/target/classes:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-thymeleaf/3.3.3/spring-boot-starter-thymeleaf-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter/3.3.3/spring-boot-starter-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-logging/3.3.3/spring-boot-starter-logging-3.3.3.jar:/home/stevetosak/.m2/repository/ch/qos/logback/logback-classic/1.5.7/logback-classic-1.5.7.jar:/home/stevetosak/.m2/repository/ch/qos/logback/logback-core/1.5.7/logback-core-1.5.7.jar:/home/stevetosak/.m2/repository/org/apache/logging/log4j/log4j-to-slf4j/2.23.1/log4j-to-slf4j-2.23.1.jar:/home/stevetosak/.m2/repository/org/apache/logging/log4j/log4j-api/2.23.1/log4j-api-2.23.1.jar:/home/stevetosak/.m2/repository/org/slf4j/jul-to-slf4j/2.0.16/jul-to-slf4j-2.0.16.jar:/home/stevetosak/.m2/repository/org/yaml/snakeyaml/2.2/snakeyaml-2.2.jar:/home/stevetosak/.m2/repository/org/thymeleaf/thymeleaf-spring6/3.1.2.RELEASE/thymeleaf-spring6-3.1.2.RELEASE.jar:/home/stevetosak/.m2/repository/org/thymeleaf/thymeleaf/3.1.2.RELEASE/thymeleaf-3.1.2.RELEASE.jar:/home/stevetosak/.m2/repository/org/attoparser/attoparser/2.0.7.RELEASE/attoparser-2.0.7.RELEASE.jar:/home/stevetosak/.m2/repository/org/unbescape/unbescape/1.1.6.RELEASE/unbescape-1.1.6.RELEASE.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-web/3.3.3/spring-boot-starter-web-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-json/3.3.3/spring-boot-starter-json-3.3.3.jar:/home/stevetosak/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.17.2/jackson-datatype-jdk8-2.17.2.jar:/home/stevetosak/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.17.2/jackson-datatype-jsr310-2.17.2.jar:/home/stevetosak/.m2/repository/com/fasterxml/jackson/module/jackson-module-parameter-names/2.17.2/jackson-module-parameter-names-2.17.2.jar:/home/stevetosak/.m2/repository/org/springframework/spring-web/6.1.12/spring-web-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/spring-beans/6.1.12/spring-beans-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/spring-webmvc/6.1.12/spring-webmvc-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/spring-context/6.1.12/spring-context-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/spring-expression/6.1.12/spring-expression-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/session/spring-session-core/3.3.2/spring-session-core-3.3.2.jar:/home/stevetosak/.m2/repository/org/springframework/spring-jcl/6.1.12/spring-jcl-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-devtools/3.3.3/spring-boot-devtools-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot/3.3.3/spring-boot-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.3.3/spring-boot-autoconfigure-3.3.3.jar:/home/stevetosak/.m2/repository/org/postgresql/postgresql/42.7.3/postgresql-42.7.3.jar:/home/stevetosak/.m2/repository/org/checkerframework/checker-qual/3.42.0/checker-qual-3.42.0.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/3.3.3/spring-boot-starter-tomcat-3.3.3.jar:/home/stevetosak/.m2/repository/jakarta/annotation/jakarta.annotation-api/2.1.1/jakarta.annotation-api-2.1.1.jar:/home/stevetosak/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/10.1.28/tomcat-embed-core-10.1.28.jar:/home/stevetosak/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/10.1.28/tomcat-embed-el-10.1.28.jar:/home/stevetosak/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/10.1.28/tomcat-embed-websocket-10.1.28.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-test/3.3.3/spring-boot-starter-test-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-test/3.3.3/spring-boot-test-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-test-autoconfigure/3.3.3/spring-boot-test-autoconfigure-3.3.3.jar:/home/stevetosak/.m2/repository/com/jayway/jsonpath/json-path/2.9.0/json-path-2.9.0.jar:/home/stevetosak/.m2/repository/jakarta/xml/bind/jakarta.xml.bind-api/4.0.2/jakarta.xml.bind-api-4.0.2.jar:/home/stevetosak/.m2/repository/jakarta/activation/jakarta.activation-api/2.1.3/jakarta.activation-api-2.1.3.jar:/home/stevetosak/.m2/repository/net/minidev/json-smart/2.5.1/json-smart-2.5.1.jar:/home/stevetosak/.m2/repository/net/minidev/accessors-smart/2.5.1/accessors-smart-2.5.1.jar:/home/stevetosak/.m2/repository/org/ow2/asm/asm/9.6/asm-9.6.jar:/home/stevetosak/.m2/repository/org/awaitility/awaitility/4.2.2/awaitility-4.2.2.jar:/home/stevetosak/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/home/stevetosak/.m2/repository/org/junit/jupiter/junit-jupiter/5.10.3/junit-jupiter-5.10.3.jar:/home/stevetosak/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.10.3/junit-jupiter-params-5.10.3.jar:/home/stevetosak/.m2/repository/org/mockito/mockito-core/5.11.0/mockito-core-5.11.0.jar:/home/stevetosak/.m2/repository/net/bytebuddy/byte-buddy-agent/1.14.19/byte-buddy-agent-1.14.19.jar:/home/stevetosak/.m2/repository/org/objenesis/objenesis/3.3/objenesis-3.3.jar:/home/stevetosak/.m2/repository/org/mockito/mockito-junit-jupiter/5.11.0/mockito-junit-jupiter-5.11.0.jar:/home/stevetosak/.m2/repository/org/skyscreamer/jsonassert/1.5.3/jsonassert-1.5.3.jar:/home/stevetosak/.m2/repository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar:/home/stevetosak/.m2/repository/org/springframework/spring-core/6.1.12/spring-core-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/spring-test/6.1.12/spring-test-6.1.12.jar:/home/stevetosak/.m2/repository/org/xmlunit/xmlunit-core/2.9.1/xmlunit-core-2.9.1.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-webflux/3.3.3/spring-boot-starter-webflux-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-reactor-netty/3.3.3/spring-boot-starter-reactor-netty-3.3.3.jar:/home/stevetosak/.m2/repository/io/projectreactor/netty/reactor-netty-http/1.1.22/reactor-netty-http-1.1.22.jar:/home/stevetosak/.m2/repository/io/netty/netty-codec-http/4.1.112.Final/netty-codec-http-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-common/4.1.112.Final/netty-common-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-buffer/4.1.112.Final/netty-buffer-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-transport/4.1.112.Final/netty-transport-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-codec/4.1.112.Final/netty-codec-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-handler/4.1.112.Final/netty-handler-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-codec-http2/4.1.112.Final/netty-codec-http2-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-resolver-dns/4.1.112.Final/netty-resolver-dns-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-resolver/4.1.112.Final/netty-resolver-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-codec-dns/4.1.112.Final/netty-codec-dns-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-resolver-dns-native-macos/4.1.112.Final/netty-resolver-dns-native-macos-4.1.112.Final-osx-x86_64.jar:/home/stevetosak/.m2/repository/io/netty/netty-resolver-dns-classes-macos/4.1.112.Final/netty-resolver-dns-classes-macos-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-transport-native-epoll/4.1.112.Final/netty-transport-native-epoll-4.1.112.Final-linux-x86_64.jar:/home/stevetosak/.m2/repository/io/netty/netty-transport-native-unix-common/4.1.112.Final/netty-transport-native-unix-common-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-transport-classes-epoll/4.1.112.Final/netty-transport-classes-epoll-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/projectreactor/netty/reactor-netty-core/1.1.22/reactor-netty-core-1.1.22.jar:/home/stevetosak/.m2/repository/io/netty/netty-handler-proxy/4.1.112.Final/netty-handler-proxy-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-codec-socks/4.1.112.Final/netty-codec-socks-4.1.112.Final.jar:/home/stevetosak/.m2/repository/org/springframework/spring-webflux/6.1.12/spring-webflux-6.1.12.jar:/home/stevetosak/.m2/repository/io/projectreactor/reactor-test/3.6.9/reactor-test-3.6.9.jar:/home/stevetosak/.m2/repository/io/projectreactor/reactor-core/3.6.9/reactor-core-3.6.9.jar:/home/stevetosak/.m2/repository/org/reactivestreams/reactive-streams/1.0.4/reactive-streams-1.0.4.jar:/home/stevetosak/.m2/repository/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-data-jpa/3.3.3/spring-boot-starter-data-jpa-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-aop/3.3.3/spring-boot-starter-aop-3.3.3.jar:/home/stevetosak/.m2/repository/org/aspectj/aspectjweaver/1.9.22.1/aspectjweaver-1.9.22.1.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-jdbc/3.3.3/spring-boot-starter-jdbc-3.3.3.jar:/home/stevetosak/.m2/repository/com/zaxxer/HikariCP/5.1.0/HikariCP-5.1.0.jar:/home/stevetosak/.m2/repository/org/springframework/spring-jdbc/6.1.12/spring-jdbc-6.1.12.jar:/home/stevetosak/.m2/repository/org/hibernate/orm/hibernate-core/6.5.2.Final/hibernate-core-6.5.2.Final.jar:/home/stevetosak/.m2/repository/jakarta/persistence/jakarta.persistence-api/3.1.0/jakarta.persistence-api-3.1.0.jar:/home/stevetosak/.m2/repository/jakarta/transaction/jakarta.transaction-api/2.0.1/jakarta.transaction-api-2.0.1.jar:/home/stevetosak/.m2/repository/org/jboss/logging/jboss-logging/3.5.3.Final/jboss-logging-3.5.3.Final.jar:/home/stevetosak/.m2/repository/org/hibernate/common/hibernate-commons-annotations/6.0.6.Final/hibernate-commons-annotations-6.0.6.Final.jar:/home/stevetosak/.m2/repository/io/smallrye/jandex/3.1.2/jandex-3.1.2.jar:/home/stevetosak/.m2/repository/com/fasterxml/classmate/1.7.0/classmate-1.7.0.jar:/home/stevetosak/.m2/repository/org/glassfish/jaxb/jaxb-runtime/4.0.5/jaxb-runtime-4.0.5.jar:/home/stevetosak/.m2/repository/org/glassfish/jaxb/jaxb-core/4.0.5/jaxb-core-4.0.5.jar:/home/stevetosak/.m2/repository/org/glassfish/jaxb/txw2/4.0.5/txw2-4.0.5.jar:/home/stevetosak/.m2/repository/com/sun/istack/istack-commons-runtime/4.1.2/istack-commons-runtime-4.1.2.jar:/home/stevetosak/.m2/repository/jakarta/inject/jakarta.inject-api/2.0.1/jakarta.inject-api-2.0.1.jar:/home/stevetosak/.m2/repository/org/antlr/antlr4-runtime/4.13.0/antlr4-runtime-4.13.0.jar:/home/stevetosak/.m2/repository/org/springframework/data/spring-data-jpa/3.3.3/spring-data-jpa-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/data/spring-data-commons/3.3.3/spring-data-commons-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/spring-orm/6.1.12/spring-orm-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/spring-tx/6.1.12/spring-tx-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/spring-aspects/6.1.12/spring-aspects-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-security/3.3.3/spring-boot-starter-security-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/spring-aop/6.1.12/spring-aop-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/security/spring-security-config/6.3.3/spring-security-config-6.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/security/spring-security-web/6.3.3/spring-security-web-6.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/security/spring-security-test/6.3.3/spring-security-test-6.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/security/spring-security-core/6.3.3/spring-security-core-6.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/security/spring-security-crypto/6.3.3/spring-security-crypto-6.3.3.jar:/home/stevetosak/.m2/repository/org/thymeleaf/extras/thymeleaf-extras-springsecurity6/3.1.2.RELEASE/thymeleaf-extras-springsecurity6-3.1.2.RELEASE.jar:/home/stevetosak/.m2/repository/org/slf4j/slf4j-api/2.0.16/slf4j-api-2.0.16.jar:/home/stevetosak/.m2/repository/org/projectlombok/lombok/1.18.34/lombok-1.18.34.jar:/home/stevetosak/.m2/repository/io/jsonwebtoken/jjwt-api/0.12.5/jjwt-api-0.12.5.jar:/home/stevetosak/.m2/repository/io/jsonwebtoken/jjwt-impl/0.12.5/jjwt-impl-0.12.5.jar:/home/stevetosak/.m2/repository/io/jsonwebtoken/jjwt-jackson/0.12.5/jjwt-jackson-0.12.5.jar:/home/stevetosak/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.17.2/jackson-databind-2.17.2.jar:/home/stevetosak/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.17.2/jackson-annotations-2.17.2.jar:/home/stevetosak/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.17.2/jackson-core-2.17.2.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-oauth2-resource-server/3.3.3/spring-boot-starter-oauth2-resource-server-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/security/spring-security-oauth2-resource-server/6.3.3/spring-security-oauth2-resource-server-6.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/security/spring-security-oauth2-core/6.3.3/spring-security-oauth2-core-6.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/security/spring-security-oauth2-jose/6.3.3/spring-security-oauth2-jose-6.3.3.jar:/home/stevetosak/.m2/repository/com/nimbusds/nimbus-jose-jwt/9.37.3/nimbus-jose-jwt-9.37.3.jar:/home/stevetosak/.m2/repository/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-mail/3.4.0/spring-boot-starter-mail-3.4.0.jar:/home/stevetosak/.m2/repository/org/springframework/spring-context-support/6.1.12/spring-context-support-6.1.12.jar:/home/stevetosak/.m2/repository/org/eclipse/angus/jakarta.mail/2.0.3/jakarta.mail-2.0.3.jar:/home/stevetosak/.m2/repository/org/eclipse/angus/angus-activation/2.0.2/angus-activation-2.0.2.jar:/home/stevetosak/.m2/repository/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.jar:/home/stevetosak/.m2/repository/junit/junit/4.13.2/junit-4.13.2.jar:/home/stevetosak/.m2/repository/org/hamcrest/hamcrest-core/2.2/hamcrest-core-2.2.jar:/home/stevetosak/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.9.0/junit-jupiter-api-5.9.0.jar:/home/stevetosak/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/home/stevetosak/.m2/repository/org/junit/platform/junit-platform-commons/1.10.3/junit-platform-commons-1.10.3.jar:/home/stevetosak/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/home/stevetosak/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.9.0/junit-jupiter-engine-5.9.0.jar:/home/stevetosak/.m2/repository/org/junit/platform/junit-platform-engine/1.10.3/junit-platform-engine-1.10.3.jar:/home/stevetosak/.m2/repository/org/assertj/assertj-core/3.23.1/assertj-core-3.23.1.jar:/home/stevetosak/.m2/repository/net/bytebuddy/byte-buddy/1.14.19/byte-buddy-1.14.19.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-actuator/3.3.3/spring-boot-starter-actuator-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-actuator-autoconfigure/3.3.3/spring-boot-actuator-autoconfigure-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-actuator/3.3.3/spring-boot-actuator-3.3.3.jar:/home/stevetosak/.m2/repository/io/micrometer/micrometer-observation/1.13.3/micrometer-observation-1.13.3.jar:/home/stevetosak/.m2/repository/io/micrometer/micrometer-commons/1.13.3/micrometer-commons-1.13.3.jar:/home/stevetosak/.m2/repository/io/micrometer/micrometer-jakarta9/1.13.3/micrometer-jakarta9-1.13.3.jar:/home/stevetosak/.m2/repository/io/micrometer/micrometer-core/1.13.3/micrometer-core-1.13.3.jar:/home/stevetosak/.m2/repository/org/hdrhistogram/HdrHistogram/2.2.2/HdrHistogram-2.2.2.jar:/home/stevetosak/.m2/repository/org/latencyutils/LatencyUtils/2.0.3/LatencyUtils-2.0.3.jar:"/>
+    <property name="java.vm.vendor" value="Oracle Corporation"/>
+    <property name="sun.arch.data.model" value="64"/>
+    <property name="java.vendor.url" value="https://java.oracle.com/"/>
+    <property name="user.timezone" value="Europe/Skopje"/>
+    <property name="org.jboss.logging.provider" value="slf4j"/>
+    <property name="os.name" value="Linux"/>
+    <property name="java.vm.specification.version" value="21"/>
+    <property name="sun.java.launcher" value="SUN_STANDARD"/>
+    <property name="user.country" value="US"/>
+    <property name="sun.boot.library.path" value="/home/stevetosak/.jdks/openjdk-21.0.2/lib"/>
+    <property name="sun.java.command" value="/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/target/surefire/surefirebooter-20250120162808795_3.jar /home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/target/surefire 2025-01-20T16-28-08_741-jvmRun1 surefire-20250120162808795_1tmp surefire_0-20250120162808795_2tmp"/>
+    <property name="jdk.debug" value="release"/>
+    <property name="surefire.test.class.path" value="/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/target/test-classes:/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/target/classes:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-thymeleaf/3.3.3/spring-boot-starter-thymeleaf-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter/3.3.3/spring-boot-starter-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-logging/3.3.3/spring-boot-starter-logging-3.3.3.jar:/home/stevetosak/.m2/repository/ch/qos/logback/logback-classic/1.5.7/logback-classic-1.5.7.jar:/home/stevetosak/.m2/repository/ch/qos/logback/logback-core/1.5.7/logback-core-1.5.7.jar:/home/stevetosak/.m2/repository/org/apache/logging/log4j/log4j-to-slf4j/2.23.1/log4j-to-slf4j-2.23.1.jar:/home/stevetosak/.m2/repository/org/apache/logging/log4j/log4j-api/2.23.1/log4j-api-2.23.1.jar:/home/stevetosak/.m2/repository/org/slf4j/jul-to-slf4j/2.0.16/jul-to-slf4j-2.0.16.jar:/home/stevetosak/.m2/repository/org/yaml/snakeyaml/2.2/snakeyaml-2.2.jar:/home/stevetosak/.m2/repository/org/thymeleaf/thymeleaf-spring6/3.1.2.RELEASE/thymeleaf-spring6-3.1.2.RELEASE.jar:/home/stevetosak/.m2/repository/org/thymeleaf/thymeleaf/3.1.2.RELEASE/thymeleaf-3.1.2.RELEASE.jar:/home/stevetosak/.m2/repository/org/attoparser/attoparser/2.0.7.RELEASE/attoparser-2.0.7.RELEASE.jar:/home/stevetosak/.m2/repository/org/unbescape/unbescape/1.1.6.RELEASE/unbescape-1.1.6.RELEASE.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-web/3.3.3/spring-boot-starter-web-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-json/3.3.3/spring-boot-starter-json-3.3.3.jar:/home/stevetosak/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jdk8/2.17.2/jackson-datatype-jdk8-2.17.2.jar:/home/stevetosak/.m2/repository/com/fasterxml/jackson/datatype/jackson-datatype-jsr310/2.17.2/jackson-datatype-jsr310-2.17.2.jar:/home/stevetosak/.m2/repository/com/fasterxml/jackson/module/jackson-module-parameter-names/2.17.2/jackson-module-parameter-names-2.17.2.jar:/home/stevetosak/.m2/repository/org/springframework/spring-web/6.1.12/spring-web-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/spring-beans/6.1.12/spring-beans-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/spring-webmvc/6.1.12/spring-webmvc-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/spring-context/6.1.12/spring-context-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/spring-expression/6.1.12/spring-expression-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/session/spring-session-core/3.3.2/spring-session-core-3.3.2.jar:/home/stevetosak/.m2/repository/org/springframework/spring-jcl/6.1.12/spring-jcl-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-devtools/3.3.3/spring-boot-devtools-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot/3.3.3/spring-boot-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/3.3.3/spring-boot-autoconfigure-3.3.3.jar:/home/stevetosak/.m2/repository/org/postgresql/postgresql/42.7.3/postgresql-42.7.3.jar:/home/stevetosak/.m2/repository/org/checkerframework/checker-qual/3.42.0/checker-qual-3.42.0.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-tomcat/3.3.3/spring-boot-starter-tomcat-3.3.3.jar:/home/stevetosak/.m2/repository/jakarta/annotation/jakarta.annotation-api/2.1.1/jakarta.annotation-api-2.1.1.jar:/home/stevetosak/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/10.1.28/tomcat-embed-core-10.1.28.jar:/home/stevetosak/.m2/repository/org/apache/tomcat/embed/tomcat-embed-el/10.1.28/tomcat-embed-el-10.1.28.jar:/home/stevetosak/.m2/repository/org/apache/tomcat/embed/tomcat-embed-websocket/10.1.28/tomcat-embed-websocket-10.1.28.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-test/3.3.3/spring-boot-starter-test-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-test/3.3.3/spring-boot-test-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-test-autoconfigure/3.3.3/spring-boot-test-autoconfigure-3.3.3.jar:/home/stevetosak/.m2/repository/com/jayway/jsonpath/json-path/2.9.0/json-path-2.9.0.jar:/home/stevetosak/.m2/repository/jakarta/xml/bind/jakarta.xml.bind-api/4.0.2/jakarta.xml.bind-api-4.0.2.jar:/home/stevetosak/.m2/repository/jakarta/activation/jakarta.activation-api/2.1.3/jakarta.activation-api-2.1.3.jar:/home/stevetosak/.m2/repository/net/minidev/json-smart/2.5.1/json-smart-2.5.1.jar:/home/stevetosak/.m2/repository/net/minidev/accessors-smart/2.5.1/accessors-smart-2.5.1.jar:/home/stevetosak/.m2/repository/org/ow2/asm/asm/9.6/asm-9.6.jar:/home/stevetosak/.m2/repository/org/awaitility/awaitility/4.2.2/awaitility-4.2.2.jar:/home/stevetosak/.m2/repository/org/hamcrest/hamcrest/2.2/hamcrest-2.2.jar:/home/stevetosak/.m2/repository/org/junit/jupiter/junit-jupiter/5.10.3/junit-jupiter-5.10.3.jar:/home/stevetosak/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.10.3/junit-jupiter-params-5.10.3.jar:/home/stevetosak/.m2/repository/org/mockito/mockito-core/5.11.0/mockito-core-5.11.0.jar:/home/stevetosak/.m2/repository/net/bytebuddy/byte-buddy-agent/1.14.19/byte-buddy-agent-1.14.19.jar:/home/stevetosak/.m2/repository/org/objenesis/objenesis/3.3/objenesis-3.3.jar:/home/stevetosak/.m2/repository/org/mockito/mockito-junit-jupiter/5.11.0/mockito-junit-jupiter-5.11.0.jar:/home/stevetosak/.m2/repository/org/skyscreamer/jsonassert/1.5.3/jsonassert-1.5.3.jar:/home/stevetosak/.m2/repository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar:/home/stevetosak/.m2/repository/org/springframework/spring-core/6.1.12/spring-core-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/spring-test/6.1.12/spring-test-6.1.12.jar:/home/stevetosak/.m2/repository/org/xmlunit/xmlunit-core/2.9.1/xmlunit-core-2.9.1.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-webflux/3.3.3/spring-boot-starter-webflux-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-reactor-netty/3.3.3/spring-boot-starter-reactor-netty-3.3.3.jar:/home/stevetosak/.m2/repository/io/projectreactor/netty/reactor-netty-http/1.1.22/reactor-netty-http-1.1.22.jar:/home/stevetosak/.m2/repository/io/netty/netty-codec-http/4.1.112.Final/netty-codec-http-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-common/4.1.112.Final/netty-common-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-buffer/4.1.112.Final/netty-buffer-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-transport/4.1.112.Final/netty-transport-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-codec/4.1.112.Final/netty-codec-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-handler/4.1.112.Final/netty-handler-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-codec-http2/4.1.112.Final/netty-codec-http2-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-resolver-dns/4.1.112.Final/netty-resolver-dns-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-resolver/4.1.112.Final/netty-resolver-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-codec-dns/4.1.112.Final/netty-codec-dns-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-resolver-dns-native-macos/4.1.112.Final/netty-resolver-dns-native-macos-4.1.112.Final-osx-x86_64.jar:/home/stevetosak/.m2/repository/io/netty/netty-resolver-dns-classes-macos/4.1.112.Final/netty-resolver-dns-classes-macos-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-transport-native-epoll/4.1.112.Final/netty-transport-native-epoll-4.1.112.Final-linux-x86_64.jar:/home/stevetosak/.m2/repository/io/netty/netty-transport-native-unix-common/4.1.112.Final/netty-transport-native-unix-common-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-transport-classes-epoll/4.1.112.Final/netty-transport-classes-epoll-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/projectreactor/netty/reactor-netty-core/1.1.22/reactor-netty-core-1.1.22.jar:/home/stevetosak/.m2/repository/io/netty/netty-handler-proxy/4.1.112.Final/netty-handler-proxy-4.1.112.Final.jar:/home/stevetosak/.m2/repository/io/netty/netty-codec-socks/4.1.112.Final/netty-codec-socks-4.1.112.Final.jar:/home/stevetosak/.m2/repository/org/springframework/spring-webflux/6.1.12/spring-webflux-6.1.12.jar:/home/stevetosak/.m2/repository/io/projectreactor/reactor-test/3.6.9/reactor-test-3.6.9.jar:/home/stevetosak/.m2/repository/io/projectreactor/reactor-core/3.6.9/reactor-core-3.6.9.jar:/home/stevetosak/.m2/repository/org/reactivestreams/reactive-streams/1.0.4/reactive-streams-1.0.4.jar:/home/stevetosak/.m2/repository/com/google/code/gson/gson/2.10.1/gson-2.10.1.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-data-jpa/3.3.3/spring-boot-starter-data-jpa-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-aop/3.3.3/spring-boot-starter-aop-3.3.3.jar:/home/stevetosak/.m2/repository/org/aspectj/aspectjweaver/1.9.22.1/aspectjweaver-1.9.22.1.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-jdbc/3.3.3/spring-boot-starter-jdbc-3.3.3.jar:/home/stevetosak/.m2/repository/com/zaxxer/HikariCP/5.1.0/HikariCP-5.1.0.jar:/home/stevetosak/.m2/repository/org/springframework/spring-jdbc/6.1.12/spring-jdbc-6.1.12.jar:/home/stevetosak/.m2/repository/org/hibernate/orm/hibernate-core/6.5.2.Final/hibernate-core-6.5.2.Final.jar:/home/stevetosak/.m2/repository/jakarta/persistence/jakarta.persistence-api/3.1.0/jakarta.persistence-api-3.1.0.jar:/home/stevetosak/.m2/repository/jakarta/transaction/jakarta.transaction-api/2.0.1/jakarta.transaction-api-2.0.1.jar:/home/stevetosak/.m2/repository/org/jboss/logging/jboss-logging/3.5.3.Final/jboss-logging-3.5.3.Final.jar:/home/stevetosak/.m2/repository/org/hibernate/common/hibernate-commons-annotations/6.0.6.Final/hibernate-commons-annotations-6.0.6.Final.jar:/home/stevetosak/.m2/repository/io/smallrye/jandex/3.1.2/jandex-3.1.2.jar:/home/stevetosak/.m2/repository/com/fasterxml/classmate/1.7.0/classmate-1.7.0.jar:/home/stevetosak/.m2/repository/org/glassfish/jaxb/jaxb-runtime/4.0.5/jaxb-runtime-4.0.5.jar:/home/stevetosak/.m2/repository/org/glassfish/jaxb/jaxb-core/4.0.5/jaxb-core-4.0.5.jar:/home/stevetosak/.m2/repository/org/glassfish/jaxb/txw2/4.0.5/txw2-4.0.5.jar:/home/stevetosak/.m2/repository/com/sun/istack/istack-commons-runtime/4.1.2/istack-commons-runtime-4.1.2.jar:/home/stevetosak/.m2/repository/jakarta/inject/jakarta.inject-api/2.0.1/jakarta.inject-api-2.0.1.jar:/home/stevetosak/.m2/repository/org/antlr/antlr4-runtime/4.13.0/antlr4-runtime-4.13.0.jar:/home/stevetosak/.m2/repository/org/springframework/data/spring-data-jpa/3.3.3/spring-data-jpa-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/data/spring-data-commons/3.3.3/spring-data-commons-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/spring-orm/6.1.12/spring-orm-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/spring-tx/6.1.12/spring-tx-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/spring-aspects/6.1.12/spring-aspects-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-security/3.3.3/spring-boot-starter-security-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/spring-aop/6.1.12/spring-aop-6.1.12.jar:/home/stevetosak/.m2/repository/org/springframework/security/spring-security-config/6.3.3/spring-security-config-6.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/security/spring-security-web/6.3.3/spring-security-web-6.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/security/spring-security-test/6.3.3/spring-security-test-6.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/security/spring-security-core/6.3.3/spring-security-core-6.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/security/spring-security-crypto/6.3.3/spring-security-crypto-6.3.3.jar:/home/stevetosak/.m2/repository/org/thymeleaf/extras/thymeleaf-extras-springsecurity6/3.1.2.RELEASE/thymeleaf-extras-springsecurity6-3.1.2.RELEASE.jar:/home/stevetosak/.m2/repository/org/slf4j/slf4j-api/2.0.16/slf4j-api-2.0.16.jar:/home/stevetosak/.m2/repository/org/projectlombok/lombok/1.18.34/lombok-1.18.34.jar:/home/stevetosak/.m2/repository/io/jsonwebtoken/jjwt-api/0.12.5/jjwt-api-0.12.5.jar:/home/stevetosak/.m2/repository/io/jsonwebtoken/jjwt-impl/0.12.5/jjwt-impl-0.12.5.jar:/home/stevetosak/.m2/repository/io/jsonwebtoken/jjwt-jackson/0.12.5/jjwt-jackson-0.12.5.jar:/home/stevetosak/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.17.2/jackson-databind-2.17.2.jar:/home/stevetosak/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.17.2/jackson-annotations-2.17.2.jar:/home/stevetosak/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.17.2/jackson-core-2.17.2.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-oauth2-resource-server/3.3.3/spring-boot-starter-oauth2-resource-server-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/security/spring-security-oauth2-resource-server/6.3.3/spring-security-oauth2-resource-server-6.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/security/spring-security-oauth2-core/6.3.3/spring-security-oauth2-core-6.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/security/spring-security-oauth2-jose/6.3.3/spring-security-oauth2-jose-6.3.3.jar:/home/stevetosak/.m2/repository/com/nimbusds/nimbus-jose-jwt/9.37.3/nimbus-jose-jwt-9.37.3.jar:/home/stevetosak/.m2/repository/com/github/stephenc/jcip/jcip-annotations/1.0-1/jcip-annotations-1.0-1.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-mail/3.4.0/spring-boot-starter-mail-3.4.0.jar:/home/stevetosak/.m2/repository/org/springframework/spring-context-support/6.1.12/spring-context-support-6.1.12.jar:/home/stevetosak/.m2/repository/org/eclipse/angus/jakarta.mail/2.0.3/jakarta.mail-2.0.3.jar:/home/stevetosak/.m2/repository/org/eclipse/angus/angus-activation/2.0.2/angus-activation-2.0.2.jar:/home/stevetosak/.m2/repository/com/googlecode/json-simple/json-simple/1.1.1/json-simple-1.1.1.jar:/home/stevetosak/.m2/repository/junit/junit/4.13.2/junit-4.13.2.jar:/home/stevetosak/.m2/repository/org/hamcrest/hamcrest-core/2.2/hamcrest-core-2.2.jar:/home/stevetosak/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.9.0/junit-jupiter-api-5.9.0.jar:/home/stevetosak/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/home/stevetosak/.m2/repository/org/junit/platform/junit-platform-commons/1.10.3/junit-platform-commons-1.10.3.jar:/home/stevetosak/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/home/stevetosak/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.9.0/junit-jupiter-engine-5.9.0.jar:/home/stevetosak/.m2/repository/org/junit/platform/junit-platform-engine/1.10.3/junit-platform-engine-1.10.3.jar:/home/stevetosak/.m2/repository/org/assertj/assertj-core/3.23.1/assertj-core-3.23.1.jar:/home/stevetosak/.m2/repository/net/bytebuddy/byte-buddy/1.14.19/byte-buddy-1.14.19.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-starter-actuator/3.3.3/spring-boot-starter-actuator-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-actuator-autoconfigure/3.3.3/spring-boot-actuator-autoconfigure-3.3.3.jar:/home/stevetosak/.m2/repository/org/springframework/boot/spring-boot-actuator/3.3.3/spring-boot-actuator-3.3.3.jar:/home/stevetosak/.m2/repository/io/micrometer/micrometer-observation/1.13.3/micrometer-observation-1.13.3.jar:/home/stevetosak/.m2/repository/io/micrometer/micrometer-commons/1.13.3/micrometer-commons-1.13.3.jar:/home/stevetosak/.m2/repository/io/micrometer/micrometer-jakarta9/1.13.3/micrometer-jakarta9-1.13.3.jar:/home/stevetosak/.m2/repository/io/micrometer/micrometer-core/1.13.3/micrometer-core-1.13.3.jar:/home/stevetosak/.m2/repository/org/hdrhistogram/HdrHistogram/2.2.2/HdrHistogram-2.2.2.jar:/home/stevetosak/.m2/repository/org/latencyutils/LatencyUtils/2.0.3/LatencyUtils-2.0.3.jar:"/>
+    <property name="sun.cpu.endian" value="little"/>
+    <property name="user.home" value="/home/stevetosak"/>
+    <property name="user.language" value="en"/>
+    <property name="java.specification.vendor" value="Oracle Corporation"/>
+    <property name="java.version.date" value="2024-01-16"/>
+    <property name="java.home" value="/home/stevetosak/.jdks/openjdk-21.0.2"/>
+    <property name="file.separator" value="/"/>
+    <property name="basedir" value="/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender"/>
+    <property name="java.vm.compressedOopsMode" value="Zero based"/>
+    <property name="line.separator" value="&#10;"/>
+    <property name="java.vm.specification.vendor" value="Oracle Corporation"/>
+    <property name="java.specification.name" value="Java Platform API Specification"/>
+    <property name="FILE_LOG_CHARSET" value="UTF-8"/>
+    <property name="java.awt.headless" value="true"/>
+    <property name="surefire.real.class.path" value="/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender/target/surefire/surefirebooter-20250120162808795_3.jar"/>
+    <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
+    <property name="java.runtime.version" value="21.0.2+13-58"/>
+    <property name="user.name" value="stevetosak"/>
+    <property name="stdout.encoding" value="UTF-8"/>
+    <property name="path.separator" value=":"/>
+    <property name="os.version" value="6.8.0-51-generic"/>
+    <property name="java.runtime.name" value="OpenJDK Runtime Environment"/>
+    <property name="file.encoding" value="UTF-8"/>
+    <property name="java.vm.name" value="OpenJDK 64-Bit Server VM"/>
+    <property name="localRepository" value="/home/stevetosak/.m2/repository"/>
+    <property name="java.vendor.url.bug" value="https://bugreport.java.com/bugreport/"/>
+    <property name="java.io.tmpdir" value="/tmp"/>
+    <property name="idea.version" value="2024.2.3"/>
+    <property name="com.zaxxer.hikari.pool_number" value="1"/>
+    <property name="java.version" value="21.0.2"/>
+    <property name="user.dir" value="/home/stevetosak/Proekt/IMaps/imaps-backend/backendRender"/>
+    <property name="os.arch" value="amd64"/>
+    <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
+    <property name="PID" value="33783"/>
+    <property name="CONSOLE_LOG_CHARSET" value="UTF-8"/>
+    <property name="native.encoding" value="UTF-8"/>
+    <property name="java.library.path" value="/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib"/>
+    <property name="java.vm.info" value="mixed mode, sharing"/>
+    <property name="stderr.encoding" value="UTF-8"/>
+    <property name="java.vendor" value="Oracle Corporation"/>
+    <property name="java.vm.version" value="21.0.2+13-58"/>
+    <property name="sun.io.unicode.encoding" value="UnicodeLittle"/>
+    <property name="java.class.version" value="65.0"/>
+    <property name="LOGGED_APPLICATION_NAME" value="[imaps-backend] "/>
+  </properties>
+  <testcase name="contextLoads" classname="internettehnologii.imaps.backendRender.BackendRenderApplicationTests" time="0.344">
+    <system-out><![CDATA[16:28:09.293 [main] INFO org.springframework.test.context.support.AnnotationConfigContextLoaderUtils -- Could not detect default configuration classes for test class [internettehnologii.imaps.backendRender.BackendRenderApplicationTests]: BackendRenderApplicationTests does not declare any static, non-private, non-final, nested classes annotated with @Configuration.
+16:28:09.356 [main] INFO org.springframework.boot.test.context.SpringBootTestContextBootstrapper -- Found @SpringBootConfiguration internettehnologii.imaps.backendRender.BackendRenderApplication for test class internettehnologii.imaps.backendRender.BackendRenderApplicationTests
+16:28:09.461 [main] INFO org.springframework.boot.devtools.restart.RestartApplicationListener -- Restart disabled due to context in which it is running
+
+  .   ____          _            __ _ _
+ /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
+( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
+ \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
+  '  |____| .__|_| |_|_| |_\__, | / / / /
+ =========|_|==============|___/=/_/_/_/
+
+ :: Spring Boot ::                (v3.3.3)
+
+2025-01-20T16:28:09.631+01:00  INFO 33783 --- [imaps-backend] [           main] i.i.b.BackendRenderApplicationTests      : Starting BackendRenderApplicationTests using Java 21.0.2 with PID 33783 (started by stevetosak in /home/stevetosak/Proekt/IMaps/imaps-backend/backendRender)
+2025-01-20T16:28:09.632+01:00  INFO 33783 --- [imaps-backend] [           main] i.i.b.BackendRenderApplicationTests      : The following 1 profile is active: "prod"
+2025-01-20T16:28:09.653+01:00 DEBUG 33783 --- [imaps-backend] [           main] o.s.w.c.s.GenericWebApplicationContext   : Refreshing org.springframework.web.context.support.GenericWebApplicationContext@5ed190be
+2025-01-20T16:28:10.381+01:00  INFO 33783 --- [imaps-backend] [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.
+2025-01-20T16:28:10.487+01:00  INFO 33783 --- [imaps-backend] [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 102 ms. Found 7 JPA repository interfaces.
+2025-01-20T16:28:11.013+01:00  INFO 33783 --- [imaps-backend] [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
+2025-01-20T16:28:11.050+01:00  INFO 33783 --- [imaps-backend] [           main] org.hibernate.Version                    : HHH000412: Hibernate ORM core version 6.5.2.Final
+2025-01-20T16:28:11.071+01:00  INFO 33783 --- [imaps-backend] [           main] o.h.c.internal.RegionFactoryInitiator    : HHH000026: Second-level cache disabled
+2025-01-20T16:28:11.280+01:00  INFO 33783 --- [imaps-backend] [           main] o.s.o.j.p.SpringPersistenceUnitInfo      : No LoadTimeWeaver setup: ignoring JPA class transformer
+2025-01-20T16:28:11.301+01:00  INFO 33783 --- [imaps-backend] [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
+2025-01-20T16:28:11.436+01:00  INFO 33783 --- [imaps-backend] [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@311a09b2
+2025-01-20T16:28:11.437+01:00  INFO 33783 --- [imaps-backend] [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Start completed.
+2025-01-20T16:28:11.464+01:00  WARN 33783 --- [imaps-backend] [           main] org.hibernate.orm.deprecation            : HHH90000025: PostgreSQLDialect does not need to be specified explicitly using 'hibernate.dialect' (remove the property setting and it will be selected by default)
+2025-01-20T16:28:12.225+01:00  INFO 33783 --- [imaps-backend] [           main] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)
+2025-01-20T16:28:12.271+01:00  INFO 33783 --- [imaps-backend] [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
+2025-01-20T16:28:12.517+01:00  INFO 33783 --- [imaps-backend] [           main] o.s.d.j.r.query.QueryEnhancerFactory     : Hibernate is in classpath; If applicable, HQL parser will be used.
+2025-01-20T16:28:12.971+01:00  WARN 33783 --- [imaps-backend] [           main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
+2025-01-20T16:28:13.068+01:00 DEBUG 33783 --- [imaps-backend] [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : 34 mappings in 'requestMappingHandlerMapping'
+2025-01-20T16:28:13.193+01:00 DEBUG 33783 --- [imaps-backend] [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Patterns [/webjars/**, /**] in 'resourceHandlerMapping'
+2025-01-20T16:28:13.347+01:00  INFO 33783 --- [imaps-backend] [           main] o.s.b.a.e.web.EndpointLinksResolver      : Exposing 1 endpoint beneath base path '/actuator'
+2025-01-20T16:28:13.416+01:00  INFO 33783 --- [imaps-backend] [           main] eAuthenticationProviderManagerConfigurer : Global AuthenticationManager configured with AuthenticationProvider bean with name authenticationProvider
+2025-01-20T16:28:13.417+01:00  WARN 33783 --- [imaps-backend] [           main] r$InitializeUserDetailsManagerConfigurer : Global AuthenticationManager configured with an AuthenticationProvider bean. UserDetailsService beans will not be used for username/password login. Consider removing the AuthenticationProvider bean. Alternatively, consider using the UserDetailsService in a manually instantiated DaoAuthenticationProvider.
+2025-01-20T16:28:13.839+01:00 DEBUG 33783 --- [imaps-backend] [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : ControllerAdvice beans: 0 @ModelAttribute, 0 @InitBinder, 1 RequestBodyAdvice, 1 ResponseBodyAdvice
+2025-01-20T16:28:13.865+01:00 DEBUG 33783 --- [imaps-backend] [           main] .m.m.a.ExceptionHandlerExceptionResolver : ControllerAdvice beans: 0 @ExceptionHandler, 1 ResponseBodyAdvice
+2025-01-20T16:28:14.176+01:00  INFO 33783 --- [imaps-backend] [           main] i.i.b.BackendRenderApplicationTests      : Started BackendRenderApplicationTests in 4.723 seconds (process running for 5.333)
+]]></system-out>
+    <system-err><![CDATA[WARNING: A Java agent has been loaded dynamically (/home/stevetosak/.m2/repository/net/bytebuddy/byte-buddy-agent/1.14.19/byte-buddy-agent-1.14.19.jar)
+WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warning
+WARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more information
+WARNING: Dynamic loading of agents will be disallowed by default in a future release
+]]></system-err>
+  </testcase>
+</testsuite>
Index: imaps-backend/backendRender/target/surefire-reports/internettehnologii.imaps.backendRender.BackendRenderApplicationTests.txt
===================================================================
--- imaps-backend/backendRender/target/surefire-reports/internettehnologii.imaps.backendRender.BackendRenderApplicationTests.txt	(revision 79a03170cdde4e801d12257ee86723774970427b)
+++ imaps-backend/backendRender/target/surefire-reports/internettehnologii.imaps.backendRender.BackendRenderApplicationTests.txt	(revision 79a03170cdde4e801d12257ee86723774970427b)
@@ -0,0 +1,4 @@
+-------------------------------------------------------------------------------
+Test set: internettehnologii.imaps.backendRender.BackendRenderApplicationTests
+-------------------------------------------------------------------------------
+Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 5.402 s -- in internettehnologii.imaps.backendRender.BackendRenderApplicationTests
