#P1780
POST /b2c/v1/auth/basic
B2C Colleague Authentication (Basic)
این اندپوینت جهت ورود همکاران و آژانسهای طرف قرارداد (Colleagues) طراحی شده است.
سیستم با دریافت نام کاربری و رمز عبور، اعتبار حساب را در جدول colleague_auth بررسی کرده و در صورت فعال بودن حساب و عدم انقضای قرارداد، یک توکن JWT صادر میکند. همچنین جزئیات سقف اعتبار و اطلاعات تماس همکار نیز بازگردانده میشود.
Colleague Login
URL:
/b2c/v1/auth/basicMethod: POST
Controller: V1UserController@authBasic
Auth: Public (Guest Access)
Headers (الزامی)
| Header Name | Description |
|---|---|
| Domain | دامنه سایت جهت ثبت در توکن (iss/aud). |
Body Parameters (الزامی)
| Parameter | Type | Description |
|---|---|---|
| username | String | نام کاربری همکار. |
| password | String | رمز عبور. |
| branch | Integer | شناسه شعبه فعال (Office ID). |
Response Structure (Success)
| Key | Description |
|---|---|
| access_token | توکن دسترسی JWT با طول عمر ۷ روز. |
| user.uuid | شناسه رکورد همکار در جدول colleagues. |
| user.role | نقش همکار:
|
| user.ceiling | اطلاعات سقف اعتباری:
|
| user.data | آبجکت جزئیات شامل نام آژانس، لوگو، تلفن و کدملی صاحب حساب. |
Example Responses
۱. موفقیت آمیز (Login Success):
{
"user": {
"uuid": 105,
"from": "colleague",
"type": "agency",
"role": "partner",
"data": {
"id": 88,
"title": {
"fa": "آژانس مسافرتی آسمان",
"en": "Aseman Travel Agency"
},
"subtitle": {
"fa": "user123 - علی رضایی",
"en": "Aseman Travel Agency"
},
"additional": false,
"avatar": "logo_105.jpg",
"sex": "male",
"first_name": "Ali",
"last_name": "Rezaei",
"first_name_fa": "علی",
"last_name_fa": "رضایی",
"mobile": "09121111111",
"phone": "02188888888",
"national_code": "0055555555"
},
"level": 2,
"ceiling": {
"amount": 50000000,
"deadline": 1
},
"expired_at": null
},
"access_token": "eyJ0eXAiOiJjb2xsZWFndWUiLCJhbGciOiJIUzI1NiJ9..."
}
۲. خطا - اطلاعات نادرست (Invalid Credentials):
{
"error": {
"type": "username",
"message": "اطلاعات وارد شده همخوانی ندارد."
}
}
۳. خطا - حساب غیرفعال (Inactive Account):
{
"error": {
"type": "username",
"message": "وضعیت شما بصورت غیرفعال می باشد."
}
}
Technical Logic
Request (User + Pass + Branch)
↓
Query DB (`colleague_auth`)
Match Username & Branch
Check
Match Username & Branch
Check
expired_at > Now (or Null)↓
Record Found?
↓ Yes
Verify Password
Hash::check(input, db_hash)↓ No
Error: Invalid Info
↓
Status == 1?
↓ Yes (Active)
Logging
Dispatch `SystemLog` to
Dispatch `SystemLog` to
snailJob queue (10min delay)↓ No (Inactive)
Error: Inactive Status
↓
Generate JWT
Type:
Claims: uuid, brn, uip, brw
Type:
colleagueClaims: uuid, brn, uip, brw
↓
Return User Data + Token