diff --git a/client/src/app/authentication/auth.service.ts b/client/src/app/authentication/auth.service.ts
index 0d86deefb6903edb9943838c011c88d46e122c42..ce40111e461ff0348ecb1c7f2c12f5c7e0eea5a6 100644
--- a/client/src/app/authentication/auth.service.ts
+++ b/client/src/app/authentication/auth.service.ts
@@ -13,7 +13,8 @@ interface IUserLogin {
   providedIn: 'root'
 })
 export class AuthService {
-  loginUrl = "api/user/login"
+  loginUrl = "api/auth/login";
+  registrationUrl = "api/auth/register";
 
   constructor(private http: HttpClient, private router: Router) { }
 
@@ -67,4 +68,29 @@ export class AuthService {
     localStorage.removeItem("token");
   }
 
+    /**
+   * Register an user, if not duplicate, add to database.
+   */
+  registerUser(user: User): Promise<string> {
+    return new Promise<string>(
+      (resolve, reject) => {
+        this.register_user(user).subscribe((data: any) => {
+          try {
+            resolve(data.data);
+          } catch (err: any) {
+            reject(err);
+          }
+        },
+        (err: any) => {
+          console.log(err.message);
+          reject(err);
+        });
+      }
+    );
+  }
+
+  private register_user(user: User) {
+    return this.http.post(this.registrationUrl, user.serialize());
+  }
+
 }
diff --git a/client/src/app/users/user-registration-form/user-registration-form.component.ts b/client/src/app/users/user-registration-form/user-registration-form.component.ts
index ac3c25c7e7db69b2af0f6e03dd380725d905ea76..25cf7f669a89962b54b71983b54f4f03ea547e12 100644
--- a/client/src/app/users/user-registration-form/user-registration-form.component.ts
+++ b/client/src/app/users/user-registration-form/user-registration-form.component.ts
@@ -1,5 +1,6 @@
 import { Component, OnInit } from '@angular/core';
 import { Router } from '@angular/router';
+import { AuthService } from 'src/app/authentication/auth.service';
 import { User } from 'src/app/models/user.model';
 import { UserService } from '../user.service';
 
@@ -15,7 +16,7 @@ export class UserRegistrationFormComponent implements OnInit {
 
   statusMessage: string = "";
 
-  constructor(private userService: UserService, private router: Router) { }
+  constructor(private userService: UserService, private authService: AuthService, private router: Router) { }
 
   ngOnInit(): void {
   }
@@ -53,7 +54,7 @@ export class UserRegistrationFormComponent implements OnInit {
       });
 
       // Adds user to database and changes page afterwards
-      this.userService.addUser(newUser).then(status => {
+      this.authService.registerUser(newUser).then(status => {
         console.log("User was added: " + JSON.stringify(status));
         this.router.navigateByUrl("/");
       }).catch(error => {
diff --git a/client/src/app/users/user.service.ts b/client/src/app/users/user.service.ts
index d5ad7a411b883902213d92f91576deec7b9ea75f..b56d03849b5795ecce38a162d4a0836678a28288 100644
--- a/client/src/app/users/user.service.ts
+++ b/client/src/app/users/user.service.ts
@@ -12,61 +12,11 @@ interface IUserLogin {
 })
 export class UserService {
   userUrl = "api/user/"
-  loginUrl = "api/user/login"
 
   constructor(private http: HttpClient) { }
 
   /**
-   * Get request of user from database on login request.
-   */
-  login(body: IUserLogin): Promise<string> {
-    return new Promise<string>(
-      (resolve, reject) => {
-        this.login_user(body).subscribe((data: any) => {
-          try {
-            resolve(data.data);
-          } catch (err: any) {
-            reject(err);
-          }
-        },
-        (err: any) => {
-          console.log(err.message);
-          reject(err);
-        });
-      }
-    );
-  }
-
-  private login_user(body: IUserLogin) {
-    return this.http.post(this.loginUrl, body);
-  }
-  /**
-   * Adds user to database.
-   */
-  addUser(user: User): Promise<string> {
-    return new Promise<string>(
-      (resolve, reject) => {
-        this.add_user(user).subscribe((data: any) => {
-          try {
-            resolve(data.data);
-          } catch (err: any) {
-            reject(err);
-          }
-        },
-        (err: any) => {
-          console.log(err.message);
-          reject(err);
-        });
-      }
-    );
-  }
-
-  private add_user(user: User) {
-    return this.http.post(this.userUrl, user.serialize());
-  }
-
-  /**
-   * Get post from database by id.
+   * Get user from database by id.
    */
   getUser(id: number): Promise<User> {
     return new Promise<User>(
diff --git a/server/src/config.ts b/server/src/config.ts
index f2dc97f88fcb1a73d5db5ac435bb2c5d720eb9b0..5efc857437bdd1a97ecfe83102924c6def85d3f3 100644
--- a/server/src/config.ts
+++ b/server/src/config.ts
@@ -17,6 +17,4 @@ export default {
 	JWT_KEY : env.JWT_KEY || "",
 	HOST: env.HOST || "localhost",
     PORT: env.HTTPPORT || 3000,
-    ACCESS_TOKEN_SECRET: env.ACCESS_TOKEN_SECRET,
-    REFRESH_TOKEN_SECRET: env.REFRESH_TOKEN_SECRET,
 };
diff --git a/server/src/controllers/authController/index.ts b/server/src/controllers/authController/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0171c6e78e6c3d536268f3380f452cad7f447751
--- /dev/null
+++ b/server/src/controllers/authController/index.ts
@@ -0,0 +1,64 @@
+import { Response, Request } from "express";
+import query from '../../services/db_query';
+import express from 'express';
+import IUser from '../../models/user';
+import * as jwt from 'jsonwebtoken';
+import config from '../../config';
+
+const router = express.Router();
+
+// Post register user `/api/auth/register`
+router.route('/register').post(async (request: Request, response: Response) => {
+	const {username, email, password, create_time} = request.body;
+	try {
+        // Check valid request data parameters
+		const user_data: IUser = {
+			"username": username,
+			"email": email,
+            "password": password,
+		};
+		if (Object.values(user_data).filter(p => p == undefined).length > 0) return response.status(500).send("Error");
+        // Check for user duplicates
+        const duplicate_input = "SELECT userId, username, email, create_time FROM user WHERE username=? AND password=?;"
+        const user = await query(duplicate_input,[user_data.username, user_data.password]);
+        const retrievedUserObj = Object.values(JSON.parse(JSON.stringify(user.data)))[0];
+		if (retrievedUserObj) {
+            return response.status(403).send("There exists an user with the same username or emails given!");
+        }
+        // If there is no duplicates, create new user
+		const input = (`INSERT INTO user(username, email, password) VALUES (?,?,?)`)
+		return response.status(200).json(
+			await query(input,Object.values(user_data))
+		);
+	} catch (error) {
+		return response.status(400).send("Bad Request");
+	}
+});
+
+// Post auth token with username and password `/api/auth/login`
+router.route('/login').post(async (request: Request, response: Response) => {
+	const {username, password} = request.body;
+	try {
+		const input = "SELECT userId, username, email, create_time FROM user WHERE username=? AND password=?;"
+		const user = await query(input,[username, password]);
+		// Check if an user object is retrieved
+		const userObj = Object.values(JSON.parse(JSON.stringify(user.data)))[0];
+		if (userObj) {
+			const jwt_token = jwt.sign({data: user.data}, config.JWT_KEY.replace(/\\n/gm, '\n'), {
+				algorithm: 'RS256',
+				expiresIn: 3600*24, // 24 hours
+			});
+			response.status(200).json({
+				token: jwt_token,
+			});
+		} else {
+			return response.status(401).send("Invalid combination of username and password given!");
+		}
+	} catch (error) {
+		return response.status(400).send("Bad Request");
+		console.log(error);
+	}
+});
+
+export default router;
+
diff --git a/server/src/controllers/userController/index.ts b/server/src/controllers/userController/index.ts
index 33b925ac4f38ca3feff091493942608d0a840a14..b0d49b9aeb5de3015d7700119d8fac43654ada7a 100644
--- a/server/src/controllers/userController/index.ts
+++ b/server/src/controllers/userController/index.ts
@@ -2,8 +2,6 @@ import { Response, Request } from "express";
 import query from '../../services/db_query';
 import express from 'express';
 import IUser from '../../models/user';
-import * as jwt from 'jsonwebtoken';
-import config from '../../config';
 import authenticateToken from '../../middlewares/auth';
 
 const router = express.Router();
@@ -48,31 +46,6 @@ router.route('/:userId').get(authenticateToken, async (request: Request, respons
 	}
 });
 
-// Get user with username and password `/api/user/`
-router.route('/login').post(async (request: Request, response: Response) => {
-	const {username, password} = request.body;
-	try {
-		const input = "SELECT userId, username, email, create_time FROM user WHERE username=? AND password=?;"
-		const user = await query(input,[username, password]);
-		// Check if an user object is retrieved
-		const userObj = Object.values(JSON.parse(JSON.stringify(user.data)))[0];
-		if (userObj) {
-			const jwt_token = jwt.sign({data: user.data}, config.JWT_KEY.replace(/\\n/gm, '\n'), {
-				algorithm: 'RS256',
-				expiresIn: 3600*24, // 24 hours
-			});
-			response.status(200).json({
-				token: jwt_token,
-			});
-		} else {
-			response.status(403).send("Invalid combination of username and password given!");
-		}
-	} catch (error) {
-		response.status(400).send("Bad Request");
-		console.log(error);
-	}
-});
-
 /* ============================= UPDATE ============================= */
 // Update user from id `/api/user/:id`
 router.route('/:userId').put(async (request: Request, response: Response) => {
diff --git a/server/src/routes/routes.ts b/server/src/routes/routes.ts
index fa6b3f5bf0ec6d8a743bc94cddf87a2ed2a0b1f1..5a3e995d620ba57055588511a2e1f0681113d6ea 100644
--- a/server/src/routes/routes.ts
+++ b/server/src/routes/routes.ts
@@ -1,6 +1,7 @@
 import postController from '../controllers/postController';
 import categoryController from '../controllers/categoryController';
 import userController from '../controllers/userController';
+import authController from '../controllers/authController';
 import express from 'express';
 
 const router = express.Router();
@@ -9,5 +10,6 @@ const router = express.Router();
 router.use("/post", postController);
 router.use("/category", categoryController);
 router.use("/user", userController);
+router.use("/auth", authController);
 
 export default router;
\ No newline at end of file