Index: iknow-api/Controllers/UserController.cs
===================================================================
--- iknow-api/Controllers/UserController.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
+++ iknow-api/Controllers/UserController.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
@@ -0,0 +1,34 @@
+﻿using iknow_api.DTOs;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using iknow_api.Services;
+
+namespace iknow_api.Controllers
+{
+    [ApiController]
+    [Route("api/[controller]")]
+    public class UserController : Controller
+    {
+        IUserService _userService;
+        public UserController(IUserService userService)
+        {
+            _userService = userService;
+        }
+        [Authorize]
+        [HttpGet("getUser")]
+        public async Task<IActionResult> getUser()
+        {
+            var authHeader = Request.Headers["Authorization"].ToString();
+            if (authHeader.StartsWith("Bearer "))
+            {
+                var token = authHeader.Substring("Bearer ".Length).Trim();
+                // token = your JWT
+                var userData = await _userService.GetUserData(token);
+                if (userData == null) return Ok(new { info = "can't get info" });
+                return Ok(new { User = userData });
+            }
+            return null;
+            
+        }
+    }
+}
Index: iknow-api/DTOs/UserDTO.cs
===================================================================
--- iknow-api/DTOs/UserDTO.cs	(revision c2e73b650de6ad28dc2d09e6d6dc6c1cb636acd7)
+++ iknow-api/DTOs/UserDTO.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
@@ -7,4 +7,8 @@
         public string Password { get; set; } = string.Empty;
         public bool GenerateRefreshToken { get; set; }
+    }
+    public class GetUserDataDto
+    {
+        public string JWT { get; set; }
     }
 
@@ -19,4 +23,15 @@
         public DateTime Bday { get; set; }
         public UserRole Role { get; set; }
+        public float gpa { get; set; }
+        public type tip { get; set; }
+        public string city { get; set; } = string.Empty;
+        public string address { get; set; } = string.Empty;
+        public string municipality { get; set; } = string.Empty;
+        public string phoneNumber { get; set; } = string.Empty;
+        public string microsoftEmail { get; set; } = string.Empty;
+        public int enrollmentYear { get; set; }
+        public quota quotaType { get; set; }
+        public major majorType { get; set; }
+
     }
 
@@ -41,3 +56,15 @@
         Student
     }
+    public enum type
+    {
+        strucen, gimnazija
+    }
+    public enum quota
+    {
+        drzavna, privatna, stipendija
+    }
+    public enum major
+    {
+        SIIS, PIT, KN, KI, IMB, IE, SSP, SEIS
+    }
 }
Index: iknow-api/Data/AppDbContext.cs
===================================================================
--- iknow-api/Data/AppDbContext.cs	(revision c2e73b650de6ad28dc2d09e6d6dc6c1cb636acd7)
+++ iknow-api/Data/AppDbContext.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
@@ -10,4 +10,7 @@
 
         public DbSet<User> User { get; set; }
+        public DbSet<ContactInfo> ContactInfo { get; set; }
+        public DbSet<HighSchool> HighSchool { get; set; }
+        public DbSet<EnrollmentInfo> EnrollmentInfo { get; set; }
         public DbSet<RefreshToken> RefreshToken { get; set; }
     }
Index: iknow-api/Migrations/20251027140655_InitialCreate.Designer.cs
===================================================================
--- iknow-api/Migrations/20251027140655_InitialCreate.Designer.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
+++ iknow-api/Migrations/20251027140655_InitialCreate.Designer.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
@@ -0,0 +1,181 @@
+﻿// <auto-generated />
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+using iknow_api.Data;
+
+#nullable disable
+
+namespace iknow_api.Migrations
+{
+    [DbContext(typeof(AppDbContext))]
+    [Migration("20251027140655_InitialCreate")]
+    partial class InitialCreate
+    {
+        /// <inheritdoc />
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .HasAnnotation("ProductVersion", "9.0.10")
+                .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+            modelBuilder.Entity("iknow_api.Models.ContactInfo", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("address")
+                        .HasColumnType("text");
+
+                    b.Property<string>("city")
+                        .HasColumnType("text");
+
+                    b.Property<string>("microsoftEmail")
+                        .HasColumnType("text");
+
+                    b.Property<string>("municipality")
+                        .HasColumnType("text");
+
+                    b.Property<string>("phoneNumber")
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("ContactInfo");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.EnrollmentInfo", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("enrollmentYear")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("major")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("EnrollmentInfo");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.HighSchool", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<float>("GPA")
+                        .HasColumnType("real");
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("tip")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId");
+
+                    b.ToTable("HighSchool");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.User", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime>("Bday")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<DateTime>("CreatedAt")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<string>("Email")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Index")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text");
+
+                    b.Property<string>("PasswordHash")
+                        .HasColumnType("text");
+
+                    b.Property<int>("Role")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Surname")
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("User");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.ContactInfo", b =>
+                {
+                    b.HasOne("iknow_api.Models.User", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.EnrollmentInfo", b =>
+                {
+                    b.HasOne("iknow_api.Models.User", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.HighSchool", b =>
+                {
+                    b.HasOne("iknow_api.Models.User", "User")
+                        .WithMany()
+                        .HasForeignKey("UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
Index: iknow-api/Migrations/20251027140655_InitialCreate.cs
===================================================================
--- iknow-api/Migrations/20251027140655_InitialCreate.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
+++ iknow-api/Migrations/20251027140655_InitialCreate.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
@@ -0,0 +1,133 @@
+﻿using System;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+
+#nullable disable
+
+namespace iknow_api.Migrations
+{
+    /// <inheritdoc />
+    public partial class InitialCreate : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.CreateTable(
+                name: "User",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    Name = table.Column<string>(type: "text", nullable: true),
+                    Surname = table.Column<string>(type: "text", nullable: true),
+                    Index = table.Column<string>(type: "text", nullable: true),
+                    Email = table.Column<string>(type: "text", nullable: true),
+                    PasswordHash = table.Column<string>(type: "text", nullable: true),
+                    Bday = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
+                    CreatedAt = table.Column<DateTime>(type: "timestamp with time zone", nullable: false),
+                    Role = table.Column<int>(type: "integer", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_User", x => x.Id);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "ContactInfo",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    city = table.Column<string>(type: "text", nullable: true),
+                    address = table.Column<string>(type: "text", nullable: true),
+                    municipality = table.Column<string>(type: "text", nullable: true),
+                    phoneNumber = table.Column<string>(type: "text", nullable: true),
+                    microsoftEmail = table.Column<string>(type: "text", nullable: true),
+                    UserId = table.Column<int>(type: "integer", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_ContactInfo", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_ContactInfo_User_UserId",
+                        column: x => x.UserId,
+                        principalTable: "User",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "EnrollmentInfo",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    enrollmentYear = table.Column<int>(type: "integer", nullable: false),
+                    major = table.Column<int>(type: "integer", nullable: false),
+                    UserId = table.Column<int>(type: "integer", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_EnrollmentInfo", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_EnrollmentInfo_User_UserId",
+                        column: x => x.UserId,
+                        principalTable: "User",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateTable(
+                name: "HighSchool",
+                columns: table => new
+                {
+                    Id = table.Column<int>(type: "integer", nullable: false)
+                        .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
+                    GPA = table.Column<float>(type: "real", nullable: false),
+                    tip = table.Column<int>(type: "integer", nullable: false),
+                    UserId = table.Column<int>(type: "integer", nullable: false)
+                },
+                constraints: table =>
+                {
+                    table.PrimaryKey("PK_HighSchool", x => x.Id);
+                    table.ForeignKey(
+                        name: "FK_HighSchool_User_UserId",
+                        column: x => x.UserId,
+                        principalTable: "User",
+                        principalColumn: "Id",
+                        onDelete: ReferentialAction.Cascade);
+                });
+
+            migrationBuilder.CreateIndex(
+                name: "IX_ContactInfo_UserId",
+                table: "ContactInfo",
+                column: "UserId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_EnrollmentInfo_UserId",
+                table: "EnrollmentInfo",
+                column: "UserId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_HighSchool_UserId",
+                table: "HighSchool",
+                column: "UserId");
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropTable(
+                name: "ContactInfo");
+
+            migrationBuilder.DropTable(
+                name: "EnrollmentInfo");
+
+            migrationBuilder.DropTable(
+                name: "HighSchool");
+
+            migrationBuilder.DropTable(
+                name: "User");
+        }
+    }
+}
Index: iknow-api/Migrations/20251027191028_dbRelations.Designer.cs
===================================================================
--- iknow-api/Migrations/20251027191028_dbRelations.Designer.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
+++ iknow-api/Migrations/20251027191028_dbRelations.Designer.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
@@ -0,0 +1,193 @@
+﻿// <auto-generated />
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
+using iknow_api.Data;
+
+#nullable disable
+
+namespace iknow_api.Migrations
+{
+    [DbContext(typeof(AppDbContext))]
+    [Migration("20251027191028_dbRelations")]
+    partial class dbRelations
+    {
+        /// <inheritdoc />
+        protected override void BuildTargetModel(ModelBuilder modelBuilder)
+        {
+#pragma warning disable 612, 618
+            modelBuilder
+                .HasAnnotation("ProductVersion", "9.0.10")
+                .HasAnnotation("Relational:MaxIdentifierLength", 63);
+
+            NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
+
+            modelBuilder.Entity("iknow_api.Models.ContactInfo", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("address")
+                        .HasColumnType("text");
+
+                    b.Property<string>("city")
+                        .HasColumnType("text");
+
+                    b.Property<string>("microsoftEmail")
+                        .HasColumnType("text");
+
+                    b.Property<string>("municipality")
+                        .HasColumnType("text");
+
+                    b.Property<string>("phoneNumber")
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId")
+                        .IsUnique();
+
+                    b.ToTable("ContactInfo");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.EnrollmentInfo", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("enrollmentYear")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("major")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId")
+                        .IsUnique();
+
+                    b.ToTable("EnrollmentInfo");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.HighSchool", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<float>("GPA")
+                        .HasColumnType("real");
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("tip")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId")
+                        .IsUnique();
+
+                    b.ToTable("HighSchool");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.User", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<DateTime>("Bday")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<DateTime>("CreatedAt")
+                        .HasColumnType("timestamp with time zone");
+
+                    b.Property<string>("Email")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Index")
+                        .HasColumnType("text");
+
+                    b.Property<string>("Name")
+                        .HasColumnType("text");
+
+                    b.Property<string>("PasswordHash")
+                        .HasColumnType("text");
+
+                    b.Property<int>("Role")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("Surname")
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("User");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.ContactInfo", b =>
+                {
+                    b.HasOne("iknow_api.Models.User", "User")
+                        .WithOne("ContactInfo")
+                        .HasForeignKey("iknow_api.Models.ContactInfo", "UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.EnrollmentInfo", b =>
+                {
+                    b.HasOne("iknow_api.Models.User", "User")
+                        .WithOne("EnrollmentInfo")
+                        .HasForeignKey("iknow_api.Models.EnrollmentInfo", "UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.HighSchool", b =>
+                {
+                    b.HasOne("iknow_api.Models.User", "User")
+                        .WithOne("HighSchool")
+                        .HasForeignKey("iknow_api.Models.HighSchool", "UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.User", b =>
+                {
+                    b.Navigation("ContactInfo");
+
+                    b.Navigation("EnrollmentInfo");
+
+                    b.Navigation("HighSchool");
+                });
+#pragma warning restore 612, 618
+        }
+    }
+}
Index: iknow-api/Migrations/20251027191028_dbRelations.cs
===================================================================
--- iknow-api/Migrations/20251027191028_dbRelations.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
+++ iknow-api/Migrations/20251027191028_dbRelations.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
@@ -0,0 +1,75 @@
+﻿using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace iknow_api.Migrations
+{
+    /// <inheritdoc />
+    public partial class dbRelations : Migration
+    {
+        /// <inheritdoc />
+        protected override void Up(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropIndex(
+                name: "IX_HighSchool_UserId",
+                table: "HighSchool");
+
+            migrationBuilder.DropIndex(
+                name: "IX_EnrollmentInfo_UserId",
+                table: "EnrollmentInfo");
+
+            migrationBuilder.DropIndex(
+                name: "IX_ContactInfo_UserId",
+                table: "ContactInfo");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_HighSchool_UserId",
+                table: "HighSchool",
+                column: "UserId",
+                unique: true);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_EnrollmentInfo_UserId",
+                table: "EnrollmentInfo",
+                column: "UserId",
+                unique: true);
+
+            migrationBuilder.CreateIndex(
+                name: "IX_ContactInfo_UserId",
+                table: "ContactInfo",
+                column: "UserId",
+                unique: true);
+        }
+
+        /// <inheritdoc />
+        protected override void Down(MigrationBuilder migrationBuilder)
+        {
+            migrationBuilder.DropIndex(
+                name: "IX_HighSchool_UserId",
+                table: "HighSchool");
+
+            migrationBuilder.DropIndex(
+                name: "IX_EnrollmentInfo_UserId",
+                table: "EnrollmentInfo");
+
+            migrationBuilder.DropIndex(
+                name: "IX_ContactInfo_UserId",
+                table: "ContactInfo");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_HighSchool_UserId",
+                table: "HighSchool",
+                column: "UserId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_EnrollmentInfo_UserId",
+                table: "EnrollmentInfo",
+                column: "UserId");
+
+            migrationBuilder.CreateIndex(
+                name: "IX_ContactInfo_UserId",
+                table: "ContactInfo",
+                column: "UserId");
+        }
+    }
+}
Index: iknow-api/Migrations/AppDbContextModelSnapshot.cs
===================================================================
--- iknow-api/Migrations/AppDbContextModelSnapshot.cs	(revision c2e73b650de6ad28dc2d09e6d6dc6c1cb636acd7)
+++ iknow-api/Migrations/AppDbContextModelSnapshot.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
@@ -23,4 +23,5 @@
             NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
 
+            modelBuilder.Entity("iknow_api.Models.ContactInfo", b =>
             modelBuilder.Entity("iknow_api.Models.RefreshToken", b =>
                 {
@@ -31,4 +32,78 @@
                     NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
 
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.Property<string>("address")
+                        .HasColumnType("text");
+
+                    b.Property<string>("city")
+                        .HasColumnType("text");
+
+                    b.Property<string>("microsoftEmail")
+                        .HasColumnType("text");
+
+                    b.Property<string>("municipality")
+                        .HasColumnType("text");
+
+                    b.Property<string>("phoneNumber")
+                        .HasColumnType("text");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId")
+                        .IsUnique();
+
+                    b.ToTable("ContactInfo");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.EnrollmentInfo", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("enrollmentYear")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("major")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId")
+                        .IsUnique();
+
+                    b.ToTable("EnrollmentInfo");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.HighSchool", b =>
+                {
+                    b.Property<int>("Id")
+                        .ValueGeneratedOnAdd()
+                        .HasColumnType("integer");
+
+                    NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
+
+                    b.Property<float>("GPA")
+                        .HasColumnType("real");
+
+                    b.Property<int>("UserId")
+                        .HasColumnType("integer");
+
+                    b.Property<int>("tip")
+                        .HasColumnType("integer");
+
+                    b.HasKey("Id");
+
+                    b.HasIndex("UserId")
+                        .IsUnique();
+
+                    b.ToTable("HighSchool");
                     b.Property<DateTime>("ExpiresAt")
                         .HasColumnType("timestamp with time zone");
@@ -88,4 +163,9 @@
                 });
 
+            modelBuilder.Entity("iknow_api.Models.ContactInfo", b =>
+                {
+                    b.HasOne("iknow_api.Models.User", "User")
+                        .WithOne("ContactInfo")
+                        .HasForeignKey("iknow_api.Models.ContactInfo", "UserId")
             modelBuilder.Entity("iknow_api.Models.RefreshToken", b =>
                 {
@@ -98,4 +178,35 @@
                     b.Navigation("User");
                 });
+
+            modelBuilder.Entity("iknow_api.Models.EnrollmentInfo", b =>
+                {
+                    b.HasOne("iknow_api.Models.User", "User")
+                        .WithOne("EnrollmentInfo")
+                        .HasForeignKey("iknow_api.Models.EnrollmentInfo", "UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.HighSchool", b =>
+                {
+                    b.HasOne("iknow_api.Models.User", "User")
+                        .WithOne("HighSchool")
+                        .HasForeignKey("iknow_api.Models.HighSchool", "UserId")
+                        .OnDelete(DeleteBehavior.Cascade)
+                        .IsRequired();
+
+                    b.Navigation("User");
+                });
+
+            modelBuilder.Entity("iknow_api.Models.User", b =>
+                {
+                    b.Navigation("ContactInfo");
+
+                    b.Navigation("EnrollmentInfo");
+
+                    b.Navigation("HighSchool");
+                });
 #pragma warning restore 612, 618
         }
Index: iknow-api/Models/ContactInfo.cs
===================================================================
--- iknow-api/Models/ContactInfo.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
+++ iknow-api/Models/ContactInfo.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
@@ -0,0 +1,17 @@
+﻿using System.ComponentModel.DataAnnotations.Schema;
+
+namespace iknow_api.Models
+{
+    public class ContactInfo
+    {
+        public int Id { get; set; }
+        public string? city { get; set; }
+        public string? address { get; set; }
+        public string? municipality { get; set; }
+        public string? phoneNumber { get; set; }
+        public string? microsoftEmail { get; set; }
+        
+        public int UserId { get; set; }
+        public User User { get; set; }
+    }
+}
Index: iknow-api/Models/EnrollmentInfo.cs
===================================================================
--- iknow-api/Models/EnrollmentInfo.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
+++ iknow-api/Models/EnrollmentInfo.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
@@ -0,0 +1,22 @@
+﻿using System.ComponentModel.DataAnnotations.Schema;
+
+namespace iknow_api.Models
+{
+    public enum quota
+    {
+        drzavna, privatna, stipendija
+    }
+    public enum major
+    {
+        SIIS, PIT, KN, KI, IMB, IE, SSP, SEIS
+    }
+    public class EnrollmentInfo
+    {
+        public int Id { get; set; }
+        public int enrollmentYear { get; set; }
+        public quota quota;
+        public major major { get; set; }
+        public int UserId { get; set; }
+        public User User { get; set; }
+    }
+}
Index: iknow-api/Models/HighSchool.cs
===================================================================
--- iknow-api/Models/HighSchool.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
+++ iknow-api/Models/HighSchool.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
@@ -0,0 +1,18 @@
+﻿using System.ComponentModel.DataAnnotations.Schema;
+
+namespace iknow_api.Models
+{
+    public enum type
+    {
+        strucen, gimnazija
+    }
+    public class HighSchool
+    {
+        public int Id { get; set; }
+        public float GPA { get; set; }
+        public type tip { get; set; }
+
+        public int UserId { get; set; }
+        public User User { get; set; }
+    }
+}
Index: iknow-api/Models/User.cs
===================================================================
--- iknow-api/Models/User.cs	(revision c2e73b650de6ad28dc2d09e6d6dc6c1cb636acd7)
+++ iknow-api/Models/User.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
@@ -21,4 +21,7 @@
         public DateTime CreatedAt { get; set; }
         public UserRole Role { get; set; }
+        public HighSchool? HighSchool { get; set; }
+        public ContactInfo? ContactInfo { get; set; }
+        public EnrollmentInfo? EnrollmentInfo { get; set; }
 
     }
Index: iknow-api/Program.cs
===================================================================
--- iknow-api/Program.cs	(revision c2e73b650de6ad28dc2d09e6d6dc6c1cb636acd7)
+++ iknow-api/Program.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
@@ -1,3 +1,4 @@
 using System.Text;
+using System.Text.Json.Serialization;
 using iknow_api.Data;
 using iknow_api.Repositories;
@@ -33,5 +34,9 @@
 });
 // Add services to the container.
-builder.Services.AddControllers();
+builder.Services.AddControllers()
+    .AddJsonOptions(options =>
+    {
+        options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;
+    });
 builder.Services.AddOpenApi();
 
@@ -42,4 +47,7 @@
 // Register your services
 builder.Services.AddScoped<IAuthService, AuthService>();
+builder.Services.AddScoped<IUserRepository, UserRepository>(); // You'll need to add the UserRepository implementation
+builder.Services.AddScoped<IUserService, UserService>();
+
 builder.Services.AddScoped<IRefreshTokenService, RefreshTokenService>();
 builder.Services.AddScoped<IUserRepository, UserRepository>(); 
Index: iknow-api/Repository/Implementations/UserRepository.cs
===================================================================
--- iknow-api/Repository/Implementations/UserRepository.cs	(revision c2e73b650de6ad28dc2d09e6d6dc6c1cb636acd7)
+++ iknow-api/Repository/Implementations/UserRepository.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
@@ -24,4 +24,15 @@
             return await _context.User.FirstOrDefaultAsync(u => u.Email == username);
         }
+        
+        public async Task<User?> GetUserByIdAsync(int id)
+        {
+            return await _context.User
+                .Include(u => u.ContactInfo)
+                .Include(u => u.EnrollmentInfo)
+                .Include(u => u.HighSchool)
+                .FirstOrDefaultAsync(u => u.Id == id);
+        }
+
+
         public async Task<User?> GetOnlyUserByIdAsync(int id)
         {
@@ -33,4 +44,19 @@
             await _context.SaveChangesAsync();
         }
+        public async Task AddContactAsync(ContactInfo contactInfo)
+        {
+            _context.ContactInfo.Add(contactInfo);
+            await _context.SaveChangesAsync();
+        }
+        public async Task AddEnrollmentAsync(EnrollmentInfo enrollment)
+        {
+            _context.EnrollmentInfo.Add(enrollment);
+            await _context.SaveChangesAsync();
+        }   
+        public async Task AddHighSchoolAsync(HighSchool highSchool)
+        {
+            _context.HighSchool.Add(highSchool);
+            await _context.SaveChangesAsync();
+        }       
 
         public async Task<int> GetUsersCountAsync()
Index: iknow-api/Repository/Interface/IUserRepository.cs
===================================================================
--- iknow-api/Repository/Interface/IUserRepository.cs	(revision c2e73b650de6ad28dc2d09e6d6dc6c1cb636acd7)
+++ iknow-api/Repository/Interface/IUserRepository.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
@@ -7,5 +7,9 @@
         Task<User?> GetUserByUsernameAsync(string username);
         Task AddUserAsync(User user);
+        Task AddContactAsync(ContactInfo contactInfo);
+        Task AddEnrollmentAsync(EnrollmentInfo enrollment);
+        Task AddHighSchoolAsync(HighSchool highSchool);
         Task<int> GetUsersCountAsync();
+        Task<User> GetUserByIdAsync(int id);
         Task<User?> GetOnlyUserByIdAsync(int id);
 
Index: iknow-api/Services/Implementations/AuthService.cs
===================================================================
--- iknow-api/Services/Implementations/AuthService.cs	(revision c2e73b650de6ad28dc2d09e6d6dc6c1cb636acd7)
+++ iknow-api/Services/Implementations/AuthService.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
@@ -45,4 +45,29 @@
 
             await _userRepository.AddUserAsync(user);
+            int userId = user.Id;
+            var contactInfo = new ContactInfo
+            {
+                UserId = userId,
+                city = registerDto.city,
+                address = registerDto.address,
+                municipality = registerDto.municipality,
+                phoneNumber = registerDto.phoneNumber,
+                microsoftEmail = registerDto.microsoftEmail
+            };
+            await _userRepository.AddContactAsync(contactInfo);
+            var enrollmentInfo = new EnrollmentInfo
+            {
+                UserId = userId,
+                enrollmentYear = registerDto.enrollmentYear,
+                quota = (Models.quota)registerDto.quotaType,
+                major = (Models.major)registerDto.majorType
+            };
+            await _userRepository.AddEnrollmentAsync(enrollmentInfo);
+            await _userRepository.AddHighSchoolAsync(new HighSchool
+            {
+                UserId = userId,
+                GPA = registerDto.gpa,
+                tip = (Models.type)registerDto.tip
+            });
             return true;
         }
Index: iknow-api/Services/Implementations/UserService.cs
===================================================================
--- iknow-api/Services/Implementations/UserService.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
+++ iknow-api/Services/Implementations/UserService.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
@@ -0,0 +1,79 @@
+﻿using iknow_api.Repositories;
+using iknow_api.Services;
+using iknow_api.DTOs;
+using Microsoft.AspNetCore.Http.HttpResults;
+using System.IdentityModel.Tokens.Jwt;
+using System.Security.Claims;
+using System.Text;
+using Microsoft.IdentityModel.Tokens;
+using iknow_api.Models;
+
+namespace iknow_api.Services
+{
+    public class UserService : IUserService
+    {
+
+        private readonly IUserRepository _userRepository;
+        private readonly IConfiguration _configuration;
+        public UserService(IUserRepository userRepository, IConfiguration configuration)
+        {
+            _userRepository = userRepository;
+            _configuration = configuration;
+        }
+        public async Task<User> GetUserData(string JWT)
+        {
+            var userId = ExtractUserIdFromJwt(JWT);
+            if (userId == null)
+                return null;
+
+            // Now you can use userId to fetch user data
+            var user = await _userRepository.GetUserByIdAsync(userId.Value);
+            if(user == null)
+                return null;
+            else
+                return user;
+        }
+
+        private int? ExtractUserIdFromJwt(string token)
+        {
+            try
+            {
+                var tokenHandler = new JwtSecurityTokenHandler();
+                var keyString = _configuration["Jwt:Key"];
+                
+                if (string.IsNullOrEmpty(keyString))
+                    return null;
+
+                var key = Encoding.UTF8.GetBytes(keyString);
+
+                var validationParameters = new TokenValidationParameters
+                {
+                    ValidateIssuerSigningKey = true,
+                    IssuerSigningKey = new SymmetricSecurityKey(key),
+                    ValidateIssuer = true,
+                    ValidIssuer = "iknow-api",
+                    ValidateAudience = true,
+                    ValidAudience = "iknow-api",
+                    ValidateLifetime = true,
+                    ClockSkew = TimeSpan.Zero
+                };
+
+                var principal = tokenHandler.ValidateToken(token, validationParameters, out SecurityToken validatedToken);
+                
+                // Extract the "id" claim that was set in AuthService.CreateToken
+                var userIdClaim = principal.FindFirst("id");
+                
+                if (userIdClaim != null && int.TryParse(userIdClaim.Value, out int userId))
+                {
+                    return userId;
+                }
+
+                return null;
+            }
+            catch
+            {
+                return null;
+            }
+        }
+    }
+}
Index: iknow-api/Services/Interfaces/IUserService.cs
===================================================================
--- iknow-api/Services/Interfaces/IUserService.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
+++ iknow-api/Services/Interfaces/IUserService.cs	(revision ff202cffe227f3226587a67fc50b6f4defb4418a)
@@ -0,0 +1,9 @@
+﻿using iknow_api.DTOs;
+using iknow_api.Models;
+namespace iknow_api.Services
+{
+    public interface IUserService
+    {
+        Task<User> GetUserData(string userId);
+    }
+}
