Skip to content

Commit

Permalink
#313 Add logged_in endpoint and early Backend API docs
Browse files Browse the repository at this point in the history
  • Loading branch information
tariqksoliman committed Feb 10, 2023
1 parent ed937d7 commit 8b6a4e7
Show file tree
Hide file tree
Showing 3 changed files with 187 additions and 43 deletions.
113 changes: 71 additions & 42 deletions API/Backend/Users/routes/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -85,51 +85,56 @@ router.post("/signup", function (req, res, next) {
if (!user) {
User.create(newUser)
.then((created) => {
// Save the user's info in the session
req.session.user = created.username;
req.session.uid = created.id;
req.session.token = crypto.randomBytes(128).toString("hex");
clearLoginSession(req);
req.session.regenerate((err) => {
// Save the user's info in the session
req.session.user = created.username;
req.session.uid = created.id;
req.session.token = crypto.randomBytes(128).toString("hex");
req.session.permission = created.permission;

User.update(
{
token: req.session.token,
},
{
where: {
id: created.id,
username: created.username,
},
}
)
.then(() => {
logger(
"info",
req.body.username + " signed up.",
req.originalUrl,
req
);
res.send({
status: "success",
username: created.username,
User.update(
{
token: req.session.token,
groups: getUserGroups(created.username, req.leadGroupName),
});
return null;
})
.catch((err) => {
logger(
"error",
"Only partially signed up.",
req.originalUrl,
req,
err
);
res.send({
status: "failure",
message: "Only partially signed up. Try logging in.",
},
{
where: {
id: created.id,
username: created.username,
},
}
)
.then(() => {
logger(
"info",
req.body.username + " signed up.",
req.originalUrl,
req
);
res.send({
status: "success",
username: created.username,
token: req.session.token,
groups: getUserGroups(created.username, req.leadGroupName),
});
return null;
})
.catch((err) => {
logger(
"error",
"Only partially signed up.",
req.originalUrl,
req,
err
);
res.send({
status: "failure",
message: "Only partially signed up. Try logging in.",
});
return null;
});
return null;
});
return null;
});
return null;
})
.catch((err) => {
Expand Down Expand Up @@ -305,6 +310,30 @@ router.post("/logout", function (req, res) {
}
});

router.get("/logged_in", function (req, res) {
if (
typeof req.session.permission === "string" &&
req.session.permission[req.session.permission.length - 1] === "1"
)
res.send({
status: "success",
message: `'${req.session.user}' is logged in to this session.`,
body: {
loggedIn: true,
user: req.session.user,
},
});
else
res.send({
status: "failure",
message: `No user is logged in to this session.`,
body: {
loggedIn: false,
user: null,
},
});
});

function getUserGroups(user, leadGroupName) {
let leads = process.env.LEADS ? JSON.parse(process.env.LEADS) : [];
let groups = {};
Expand Down
116 changes: 116 additions & 0 deletions docs/pages/APIs/Backend/Backend.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
---
layout: page
title: Backend API
permalink: /apis/backend
has_children: false
nav_order: 4
parent: APIs
---

An incomplete list of supported backend endpoints. See more in [Configure REST API](/MMGIS/apis/configure).

## Users Endpoints

### POST /api/users/login

### POST /api/users/signup

---

### GET /api/users/logged_in

Checks whether a user is currently logged in to the current client's session. Uses cookie token.

#### Parameters

_NONE_

#### Returns

##### If logged in _(200)_:

```javascript
{
status: "success",
message: `'{user}' is logged in to this session.`,
body: {
loggedIn: true,
user: `{user}`
}
}
```

##### If **not** logged in _(200)_:

```javascript
{
status: "failure",
message: `No user is logged in to this session.`,
body: {
loggedIn: false,
user: null
}
}
```

---

### POST /api/users/logout

## Utility Endpoints

### POST /api/utils/getbands

### POST /api/utils/getprofile

### GET /api/utils/queryTilesetTimes

## Draw Endpoints

### POST /api/draw/add

### POST /api/draw/edit

### POST /api/draw/remove

### POST /api/draw/undo

### POST /api/draw/merge

### POST /api/draw/split

## Files Endpoints

### POST /api/files/getfiles

### POST /api/files/getfile

### POST /api/files/make

### POST /api/files/remove

### POST /api/files/restore

### POST /api/files/change

### POST /api/files/modifykeyword

### GET /api/files/compile

### POST /api/files/publish

### POST /api/files/gethistory

## URL Shortener Endpoints

### POST /api/shortener/shorten

### POST /api/shortener/expand

## Geo/Datasets Endpoints

### POST /api/datasets/get

### POST /api/geodatasets/get

### POST /api/geodatasets/search
1 change: 0 additions & 1 deletion src/essence/Ancillary/Login/Login.js
Original file line number Diff line number Diff line change
Expand Up @@ -364,7 +364,6 @@ var Login = {
})

values['mission'] = L_.mission
values['master'] = L_.masterdb

if (!Login.signUp) {
if (validate.username && validate.password) {
Expand Down

0 comments on commit 8b6a4e7

Please sign in to comment.