Files
next-fiber/belgeler/login_register.md
Beyhan Oğur b2825e1698 first commit
2026-04-26 22:14:08 +03:00

291 lines
7.0 KiB
Markdown

## POST Request
Login
```bash
curl -X 'POST' \
'http://127.0.0.1:8080/api/v1/auth/login' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"email": "beyhan@beyhan.dev",
"password": "1923btO**"
}'
```
### Request URL
```
http://127.0.0.1:8080/api/v1/auth/login
```
---
### Server Response
| Code | Details |
|------|---------|
| 200 | Success |
#### Response Body
```json
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjo2LCJlbWFpbCI6ImJleWhhbkBiZXloYW4uZGV2IiwiaXNfYWRtaW4iOnRydWUsImZpcnN0X25hbWUiOiJCZXloYW4iLCJsYXN0X25hbWUiOiJPxJ91ciIsInRva2VuX3R5cGUiOiJhY2Nlc3MiLCJzdWIiOiI2IiwiZXhwIjoxNzcxNzAxNjcyLCJpYXQiOjE3NzE2OTQ0NzJ9.i3OcKU8ChmzR9DirsyRS1gvR0lvAcHuPCNnIvbnvtIc",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjo2LCJlbWFpbCI6ImJleWhhbkBiZXloYW4uZGV2IiwiaXNfYWRtaW4iOnRydWUsImZpcnN0X25hbWUiOiJCZXloYW4iLCJsYXN0X25hbWUiOiJPxJ91ciIsInRva2VuX3R5cGUiOiJyZWZyZXNoIiwic3ViIjoiNiIsImV4cCI6MTc3NDI4NjQ3MiwiaWF0IjoxNzcxNjk0NDcyfQ.MHG1gK1Jt_6mi2kLXfXpg59QhXaLX-KxFBdMPzQ3X1U",
"user": {
"email": "beyhan@beyhan.dev",
"first_name": "Beyhan",
"id": 6,
"is_admin": true,
"last_name": "Oğur",
"username": "Beyhan Oğur"
}
}
```
#########################
## GET Request
Me
```bash
curl -X 'GET' \
'http://127.0.0.1:8080/api/v1/auth/me' \
-H 'accept: application/json' \
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjo2LCJlbWFpbCI6ImJleWhhbkBiZXloYW4uZGV2IiwiaXNfYWRtaW4iOnRydWUsImZpcnN0X25hbWUiOiJCZXloYW4iLCJsYXN0X25hbWUiOiJPxJ91ciIsInRva2VuX3R5cGUiOiJhY2Nlc3MiLCJzdWIiOiI2IiwiZXhwIjoxNzcxNzAyMTU2LCJpYXQiOjE3NzE2OTQ5NTZ9.QHid2xqKsdwe1E-vkrZLA7nB_qL3DEcEWztbkFoOaZU'
```
### Request URL
```
http://127.0.0.1:8080/api/v1/auth/me
```
---
### Server Response
| Code | Details |
|------|---------|
| 200 | Success |
#### Response Body
```json
{
"user": {
"email": "beyhan@beyhan.dev",
"first_name": "Beyhan",
"id": 6,
"is_admin": true,
"last_name": "Oğur"
}
}
```
#####################################
## POST Request
Refrsfh Token
```bash
curl -X 'POST' \
'http://127.0.0.1:8080/api/v1/auth/refresh' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjo2LCJlbWFpbCI6ImJleWhhbkBiZXloYW4uZGV2IiwiaXNfYWRtaW4iOnRydWUsImZpcnN0X25hbWUiOiJCZXloYW4iLCJsYXN0X25hbWUiOiJPxJ91ciIsInRva2VuX3R5cGUiOiJyZWZyZXNoIiwic3ViIjoiNiIsImV4cCI6MTc3NDI4Njk1NiwiaWF0IjoxNzcxNjk0OTU2fQ.IiVn9tmnItk_mmB5Hfp0dRJL_jFHlvp68hDvJROeGqo"
}'
```
### Request URL
```
http://127.0.0.1:8080/api/v1/auth/refresh
```
---
### Server Response
| Code | Details |
|------|---------|
| 200 | Success |
#### Response Body
```json
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjo2LCJlbWFpbCI6ImJleWhhbkBiZXloYW4uZGV2IiwiaXNfYWRtaW4iOnRydWUsImZpcnN0X25hbWUiOiJCZXloYW4iLCJsYXN0X25hbWUiOiJPxJ91ciIsInRva2VuX3R5cGUiOiJhY2Nlc3MiLCJzdWIiOiI2IiwiZXhwIjoxNzcxNzAyMzQwLCJpYXQiOjE3NzE2OTUxNDB9.0RqIfDNY3Tc--Waaztgh2dOeKAxpUKWEPfN86SK7kOw",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjo2LCJlbWFpbCI6ImJleWhhbkBiZXloYW4uZGV2IiwiaXNfYWRtaW4iOnRydWUsImZpcnN0X25hbWUiOiJCZXloYW4iLCJsYXN0X25hbWUiOiJPxJ91ciIsInRva2VuX3R5cGUiOiJyZWZyZXNoIiwic3ViIjoiNiIsImV4cCI6MTc3NDI4NzE0MCwiaWF0IjoxNzcxNjk1MTQwfQ.bZkKmx-4KvlSy4A1Hf9YU5hZAV4e9HQfjtnbyG1PYwY"
}
```
## POST Request
Register
```bash
curl -X 'POST' \
'http://127.0.0.1:8080/api/v1/auth/register' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"email": "aresss1234@ddddd.com",
"first_name": "adi",
"last_name": "soyadi",
"password": "password",
"username": "username"
}'
```
### Request URL
```
http://127.0.0.1:8080/api/v1/auth/register
```
---
### Server Response
| Code | Details |
|------|---------|
| 201 | Created |
#### Response Body
```json
{
"message": "registration successful, please verify your email before login",
"user": {
"email": "aresss1234@ddddd.com",
"email_verified": false,
"first_name": "adi",
"id": 44,
"is_admin": false,
"last_name": "soyadi",
"username": "username"
}
}
```
####################
email Doğrulama
## GET Request
```bash
curl -X 'GET' \
'http://127.0.0.1:8080/api/v1/auth/verify-email?token=7f9e5f4d2036e1194856cc1184f0ffbeb86480ecc08d2c5ca18e6da1de0bf829' \
-H 'accept: application/json'
```
### Request URL
```
http://127.0.0.1:8080/api/v1/auth/verify-email?token=7f9e5f4d2036e1194856cc1184f0ffbeb86480ecc08d2c5ca18e6da1de0bf829
```
---
### Server Response
| Code | Details |
|------|---------|
| 200 | Success |
#### Response Body
```json
{
"message": "email verified successfully"
}
```
Resent Email dogrulamasi
url -X 'POST' \
'http://127.0.0.1:8080/api/v1/auth/resend-verification' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"email": "aressfsdfss1234@ddddd.com"
}'
Request URL
http://127.0.0.1:8080/api/v1/auth/resend-verification
################################
## Prompt: Next.js Login/Register Pages with Turnstile Protection
**Task:**
Using the dependencies and devDependencies listed below, design and implement Login and Register pages for a Next.js application. Both pages should be protected with Turnstile (Cloudflare's CAPTCHA alternative).
---
### Dependencies
```json
{
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"lucide-react": "^0.575.0",
"next": "16.1.6",
"next-themes": "^0.4.6",
"radix-ui": "^1.4.3",
"react": "19.2.3",
"react-dom": "19.2.3",
"tailwind-merge": "^3.5.0"
}
```
### DevDependencies
```json
{
"@tailwindcss/postcss": "^4",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
"eslint": "^9",
"eslint-config-next": "16.1.6",
"shadcn": "^3.8.5",
"tailwindcss": "^4",
"tw-animate-css": "^1.4.0",
"typescript": "^5"
}
```
---
### Requirements
1. **Design modern, responsive Login and Register pages using Next.js, React, Radix UI, and TailwindCSS utilities.**
2. **Use Cloudflare Turnstile to protect both forms (login & register) from bot abuse.**
3. **Leverage shadcn UI and lucide-react for enhanced UI and icons.**
4. **Apply type safety using TypeScript and provide user feedback for validation/errors.**
5. **Use best practices for modularity, accessibility (a11y), and theming (next-themes).**
6. **Add animations with tw-animate-css for user interactions (e.g., button hover/submission feedback).**
7. **Style using tailwind-merge, class-variance-authority, and clsx for dynamic class management.**
8. **Lint and format with the provided ESLint setup.**
---
**Extra:**
- Ensure proper email/password validation and error handling.
- Make the UI adaptive for light/dark themes.
- Provide a clear description in TypeScript doc comments.
---
**References:**
- [Cloudflare Turnstile Docs](https://developers.cloudflare.com/turnstile/)
- [shadcn UI](https://ui.shadcn.com/)
- [Radix UI](https://www.radix-ui.com/)
---