Index: reactapp/src/Pages/Home.js
===================================================================
--- reactapp/src/Pages/Home.js	(revision 6eba109d7d2a405c2c4bf11d744ceb4c8a56c9da)
+++ reactapp/src/Pages/Home.js	(revision 702ca779afcdb48bcc15202ffc07dfb4be2efebd)
@@ -1,8 +1,12 @@
-import React from "react";
+import React, { useContext } from "react";
 import { MainWrapper, MainTitle } from "../Components/Styled/Main.style";
 import { Outlet } from "react-router-dom";
 import Search from "../Components/Search";
+import UserHeader from "../Components/UserHeader";
+import AuthApi from "../api/AuthApi";
 
 function Home() {
+  const { auth, setAuth } = useContext(AuthApi);
+
   return (
     <MainWrapper>
@@ -20,4 +24,5 @@
       </a>{" "}
       <Search />
+      {auth && <UserHeader />}
       <div style={{ marginTop: "140px" }}></div>
       <Outlet />
Index: reactapp/src/Pages/Login.js
===================================================================
--- reactapp/src/Pages/Login.js	(revision 6eba109d7d2a405c2c4bf11d744ceb4c8a56c9da)
+++ reactapp/src/Pages/Login.js	(revision 702ca779afcdb48bcc15202ffc07dfb4be2efebd)
@@ -45,21 +45,6 @@
   };
 
-  const handleLogout = () => {
-    setAuth(false);
-    Cookies.remove("JSESSIONID");
-  };
-
   return auth ? (
-    /*
-    <div style={{ marginTop: "140px" }}>
-      <h1>Успешна најава!</h1>
-      <br />
-      <p>
-        <a href="/user">Оди на protected</a>
-      </p>
-      <button onClick={handleLogout}>Одјави се</button>
-    </div>
-    */
-    <Navigate to="/user" />
+    <Navigate to="/user_dashboard" />
   ) : (
     <div style={{ marginTop: "140px" }}>
Index: reactapp/src/Pages/Professor.js
===================================================================
--- reactapp/src/Pages/Professor.js	(revision 6eba109d7d2a405c2c4bf11d744ceb4c8a56c9da)
+++ reactapp/src/Pages/Professor.js	(revision 702ca779afcdb48bcc15202ffc07dfb4be2efebd)
@@ -1,7 +1,17 @@
-import React, { useEffect, useState } from "react";
+import React, { useEffect, useState, useContext } from "react";
 import { Outlet, useParams } from "react-router-dom";
 import JSOG from "jsog";
 import OpinionTree from "../Components/OpinionTree";
-
+import {
+  AddOpinionButton,
+  Modal,
+  ModalContent,
+  ModalClose,
+  ModalHeader,
+  ModalBody,
+  ModalInput,
+  ModalTextarea,
+  ModalFooter,
+} from "../Components/Styled/Modal.style";
 import {
   ProfessorCard,
@@ -10,13 +20,20 @@
   ProfessorCardSeparator,
 } from "../Components/Styled/ProfessorCard.style";
+import AuthApi from "../api/AuthApi";
+import { useNavigate } from "react-router-dom";
 
-function Professor(props) {
+function Professor() {
   let params = useParams();
 
   let [professor, setProfessor] = useState(null);
   let [loaded, setLoaded] = useState(null);
+  let [modalDisplay, setModalDisplay] = useState("none");
+  let navigate = useNavigate();
+  const { auth, setAuth } = useContext(AuthApi);
+  const [addPostTitle, setAddPostTitle] = useState("");
+  const [addPostContent, setAddPostContent] = useState("");
 
   useEffect(() => {
-    const url = `http://192.168.0.18:8080/public/professor/${params.professorId}`;
+    const url = `http://192.168.0.17:8080/public/professor/${params.professorId}`;
 
     const fetchData = async () => {
@@ -24,10 +41,10 @@
         const response = await fetch(url);
         var cyclicGraph = await response.json();
-        var jsogStructure = JSOG.encode(cyclicGraph); // has { '@ref': 'ID' } links instead of cycles
+        var jsogStructure = JSOG.encode(cyclicGraph);
         cyclicGraph = JSOG.decode(jsogStructure);
         setProfessor(cyclicGraph);
         setLoaded(true);
       } catch (error) {
-        console.log("Error", error);
+        console.log("Fetching error", error);
       }
     };
@@ -35,4 +52,27 @@
     fetchData();
   }, [params.professorId]);
+
+  const handleAddOpinionButtonClick = () => {
+    if (auth) {
+      setModalDisplay("block");
+    } else {
+      navigate("/login");
+    }
+  };
+
+  const handleModalCloseClick = () => {
+    setModalDisplay("none");
+    console.log("here");
+  };
+
+  const handlePostSubmit = () => {};
+
+  const handleTitleChange = (e) => {
+    setAddPostTitle(e.target.value);
+  };
+
+  const handleContentChange = (e) => {
+    setAddPostContent(e.target.value);
+  };
 
   if (loaded) {
@@ -51,8 +91,55 @@
           </div>
         </ProfessorCard>
-        <h3 style={{ marginBottom: "10px" }}>
-          {professor.relatedOpinions.length}{" "}
-          {professor.relatedOpinions.length !== 1 ? "мислења" : "мислење"}
-        </h3>
+        <div style={{ height: "20px", marginBottom: "30px" }}>
+          <h3
+            style={{
+              float: "left",
+            }}
+          >
+            {professor.relatedOpinions.length}{" "}
+            {professor.relatedOpinions.length !== 1 ? "мислења" : "мислење"}
+          </h3>
+          <AddOpinionButton onClick={handleAddOpinionButtonClick}>
+            Објави мислење
+          </AddOpinionButton>
+        </div>
+
+        <Modal display={modalDisplay}>
+          <ModalContent>
+            <ModalHeader>
+              <ModalClose onClick={handleModalCloseClick}>&times;</ModalClose>
+              <h3 style={{ marginTop: "5px" }}>
+                Мислење за {professor.professorName}
+              </h3>
+            </ModalHeader>
+            <ModalBody>
+              <form onSubmit={handlePostSubmit}>
+                <label for="title">
+                  <b>Наслов</b>:
+                  <ModalInput
+                    id="title"
+                    type="text"
+                    value={addPostTitle}
+                    onChange={handleTitleChange}
+                  />
+                </label>
+                <label for="content">
+                  <b>Содржина</b>:
+                  <ModalTextarea
+                    id="content"
+                    rows="8"
+                    cols="100"
+                    value={addPostContent}
+                    onChange={handleContentChange}
+                  />
+                </label>
+              </form>
+            </ModalBody>
+            <ModalFooter>
+              <h2 style={{ textAlign: "center" }}>ОБЈАВИ</h2>
+            </ModalFooter>
+          </ModalContent>
+        </Modal>
+
         <div className="opinionTree">
           <OpinionTree professor={professor} />
Index: reactapp/src/Pages/User.js
===================================================================
--- reactapp/src/Pages/User.js	(revision 6eba109d7d2a405c2c4bf11d744ceb4c8a56c9da)
+++ 	(revision )
@@ -1,17 +1,0 @@
-import React, { useState, useContext } from "react";
-import AuthApi from "../api/AuthApi";
-
-import Logout from "../Components/Logout";
-
-function User() {
-  const { auth, setAuth } = useContext(AuthApi);
-
-  return (
-    <>
-      user page
-      <Logout />
-    </>
-  );
-}
-
-export default User;
Index: reactapp/src/Pages/UserDashboard.js
===================================================================
--- reactapp/src/Pages/UserDashboard.js	(revision 702ca779afcdb48bcc15202ffc07dfb4be2efebd)
+++ reactapp/src/Pages/UserDashboard.js	(revision 702ca779afcdb48bcc15202ffc07dfb4be2efebd)
@@ -0,0 +1,97 @@
+import React, { useState, useEffect } from "react";
+import JSOG from "jsog";
+import axios from "../api/axios";
+import {
+  OpinionCard,
+  OpinionCardContent,
+  OpinionCardContentTime,
+  OpinionCardContentTitle,
+} from "../Components/Styled/OpinionCard.style";
+import {
+  UserDetailsCard,
+  UserDetailsCardContent,
+} from "../Components/Styled/UserDetails.style";
+import { dateConverter } from "../Util/dateConverter";
+
+function UserDashboard() {
+  const [user, setUser] = useState(null);
+  const [loaded, setLoaded] = useState(false);
+
+  useEffect(() => {
+    const fetchData = async () => {
+      try {
+        const response = await axios.get(
+          "http://192.168.0.17:8080/secure/currentUser",
+          { withCredentials: true }
+        );
+        var cyclicGraph = await response.data;
+        var jsogStructure = JSOG.encode(cyclicGraph);
+        cyclicGraph = JSOG.decode(jsogStructure);
+        setUser(cyclicGraph);
+        setLoaded(true);
+      } catch (error) {
+        console.log("Fetching error", error);
+      }
+    };
+
+    fetchData();
+  }, []);
+
+  return loaded ? (
+    <>
+      <h3>Кориснички податоци:</h3>
+      <UserDetailsCard>
+        <UserDetailsCardContent>
+          <b>Име:</b> {user.fullName}{" "}
+          <i style={{ fontSize: 14, color: "#0066cc" }}>
+            (<u>промени</u>)
+          </i>
+        </UserDetailsCardContent>
+        <UserDetailsCardContent>
+          <b>Корисничко име:</b> {user.username}{" "}
+          <i style={{ fontSize: 14, color: "#0066cc" }}>
+            (<u>промени</u>)
+          </i>
+        </UserDetailsCardContent>
+        <UserDetailsCardContent>
+          <b>E-mail:</b> {user.email}
+        </UserDetailsCardContent>
+        <UserDetailsCardContent>
+          <b>Карма:</b> {user.karma}
+        </UserDetailsCardContent>
+      </UserDetailsCard>
+      {user.authoredPosts.length > 0 ? (
+        <h3 style={{ marginBottom: "10px" }}>Ваши мислења:</h3>
+      ) : (
+        <h3>Немате објавени мислења</h3>
+      )}
+      {user.authoredPosts.map((post) => {
+        return (
+          <div key={post.postId}>
+            <OpinionCard>
+              <OpinionCardContent>
+                <p>
+                  Во дискусија за{" "}
+                  <a href={"/professor/" + post.targetProfessor.professorId}>
+                    {post.targetProfessor.professorName}
+                  </a>
+                </p>
+                <OpinionCardContentTitle>{post.title}</OpinionCardContentTitle>
+                <p>{post.content}</p>
+                <OpinionCardContentTime>
+                  {dateConverter(
+                    new Date(post.timePosted).toString().slice(4, -43)
+                  )}
+                </OpinionCardContentTime>
+              </OpinionCardContent>
+            </OpinionCard>
+          </div>
+        );
+      })}
+    </>
+  ) : (
+    <>се вчитува...</>
+  );
+}
+
+export default UserDashboard;
