first commit
This commit is contained in:
291
belgeler/login_register.md
Normal file
291
belgeler/login_register.md
Normal file
@@ -0,0 +1,291 @@
|
||||
## 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/)
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user