Guests
Guests are users that are not logged in, but has a JWT.
How it works
When a user visits the website for the first time, a JWT is generated for him, and this token is sent to the user, and the user will send this token with every request to the server.
Define guest route
To generate an access token for guests, define a route inside the routes file in users directory
import { router, Request, Response, guestLogin } from "@mongez/warlock";
router.post("/login/guests", guestLogin);
// rest of the routes
The guestLogin function will generate a JWT for the user and send it to him.
Guest Model
Guests have separate collection with Guest model (guests collection in database) that has basically just the guest id.
Each guest model returns the following response:
{
"id": "int",
"userType": "guest"
}
The userType is used to differentiate between guests and logged in users.
Every guest model extends Auth Model to inherit all access token related methods.
Extending Guest Model
You can extend the guest model to modify or set the output data when called inside guest login.
import { Guest as BaseGuest } from "@mongez/warlock";
export class Guest extends BaseGuest {
// do your stuff here
}
Now modify the auth.userType configurations to use the new guest model.
import { AuthConfigurations } from "@mongez/warlock";
import { Guest } from "app/users/models/guest";
const authConfigurations: AuthConfigurations = {
userType: {
guest: Guest,
// other user types
},
// rest of the configurations
};