-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add profile route both for public and private
- Loading branch information
Showing
5 changed files
with
116 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
const userRepository = require("../repository/userRepository"); | ||
|
||
const constants = require("../constants"); | ||
|
||
const bcrypt = require("../helpers/bcrypt"); | ||
|
||
const { maskUser } = require("../helpers/utils"); | ||
|
||
const jwt = require("../helpers/jwt"); | ||
|
||
const userController = { | ||
// get user profile | ||
getProfile: async function (req, res, next) { | ||
try { | ||
// get user param | ||
const username = req.params.username; | ||
|
||
// get user info from database | ||
const user = await userRepository.getUserByUsername(username); | ||
// check if user exists | ||
if (!user) { | ||
res.status(constants.http.StatusNotFound).json({ | ||
status: false, | ||
code: constants.http.StatusNotFound, | ||
error: "not found", | ||
message: "no user found", | ||
data: null, | ||
}); | ||
return; | ||
} | ||
|
||
// check if authenticated user | ||
var isAuthenticated = false; | ||
var token; | ||
// get token from header | ||
try { | ||
token = req.headers.authorization.split(" ")[1]; | ||
} catch (err) { | ||
// console.log("error: failed to get token from header"); | ||
} | ||
|
||
// get cookie | ||
token = req.cookies.token; | ||
|
||
// if token exist and verified set authenticated | ||
if (token) { | ||
// verify token | ||
const verifyOpts = jwt.getVerifyingOptions(); | ||
const decodedToken = await jwt.verifyToken(token, verifyOpts); | ||
if (decodedToken) { | ||
if (decodedToken.username == user.username) { | ||
isAuthenticated = true; | ||
} | ||
} | ||
} | ||
|
||
const maskedUser = maskUser(user, isAuthenticated); | ||
|
||
if (isAuthenticated) { | ||
// FIXME: replace with original images | ||
maskedUser.gallery = ["private images"]; | ||
} else { | ||
maskedUser.gallery = ["public images"]; | ||
} | ||
|
||
res.status(constants.http.StatusOK).json({ | ||
status: true, | ||
data: maskedUser, | ||
}); | ||
} catch (err) { | ||
console.error(err); | ||
res.status(constants.http.StatusInternalServerError).json({ | ||
status: false, | ||
code: constants.http.StatusInternalServerError, | ||
error: "Internal Server Error", | ||
message: err, | ||
}); | ||
} | ||
}, | ||
}; | ||
|
||
module.exports = userController; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
var express = require("express"); | ||
var router = express.Router(); | ||
|
||
var v1Router = require("./v1"); | ||
|
||
/* API routes */ | ||
router.use("/v1", v1Router); | ||
|
||
module.exports = router; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
var express = require("express"); | ||
var router = express.Router(); | ||
|
||
var userRouter = require("./user"); | ||
|
||
/* API version 1 Routes */ | ||
|
||
// User profile routes | ||
router.use("/user", userRouter); | ||
|
||
module.exports = router; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
var express = require("express"); | ||
var router = express.Router(); | ||
|
||
const userController = require("../../controllers/userController"); | ||
|
||
router.get("/:username", userController.getProfile); | ||
|
||
module.exports = router; |