triston-notes/Cards/dev/JWT Class Boilerplate.md

55 lines
1.7 KiB
Markdown
Raw Normal View History

2023-10-21 23:52:54 +00:00
up:: [[Boilerplate Code]]
X:: [[JavaScript]]
tags:: #boilerplate
# JWT Class Boilerplate
## Here is a simple example of how you might use JSON Web Tokens (JWTs) for user management in a TypeScript project:
```tsx
import jwt from 'jsonwebtoken';
class User {
private id: number;
private username: string;
private password: string;
constructor(id: number, username: string, password: string) {
this.id = id;
this.username = username;
this.password = password;
}
public getId(): number {
return this.id;
}
public getUsername(): string {
return this.username;
}
public setUsername(username: string): void {
this.username = username;
}
public getPassword(): string {
return this.password;
}
public setPassword(password: string): void {
this.password = password;
}
public generateJWT(): string {
const tokenData = {
id: this.id,
username: this.username,
};
return jwt.sign(tokenData, process.env.JWT_SECRET);
}
}
```
In this example, the **`User`** class has three private properties: **`id`**, **`username`**, and **`password`**. The class has a constructor that accepts values for **`id`**, **`username`**, and **`password`**, and assigns them to the respective properties. The class also has methods for accessing and modifying these properties, as well as a method for generating a JSON Web Token (JWT) for the user. The **`generateJWT`** method uses the **`jsonwebtoken`** library to sign a JSON object containing the user's **`id`** and **`username`** properties, using a secret key stored in the **`JWT_SECRET`** environment variable. This JWT can then be sent to the client and used to authenticate and authorize the user in subsequent requests.