پرش به محتویات

ورود اولیه کاربران

معرفی

سرویس Auth مسئول مدیریت احراز هویت کاربران و تولید کلید عمومی (Public Key) از طریق HD Wallet است. این سرویس شامل قابلیت ورود کاربران با OTP و اطمینان از وجود کلید عمومی برای هر کاربر جهت انجام عملیات امن در ادامه می‌باشد.

متدها و عملکردها

ورود با OTP

نام متد: LoginWithOTP
توضیحات: احراز هویت کاربر با استفاده از کد OTP. در صورت عدم وجود کاربر، یک کاربر جدید ایجاد شده و کلید عمومی از سرویس Wallet دریافت می‌شود. کاربرانی هم که از قبل ثبت‌نام کرده‌اند، چک می‌شوند و در صورت نداشتن کلید عمومی برای آن‌ها تولید می‌شود.

ورودی‌ها:

UserLoginReq: شامل اطلاعاتی مانند شماره موبایل و کد OTP.

خروجی‌ها:

UserAccessTokenRes: شامل AccessToken، RefreshToken و AccessExpiresAt.

جریان عملکرد:

1- بررسی اعتبار کد OTP با استفاده از متد CheckOTPCode.

2- ایجاد کاربر جدید در صورت عدم وجود کاربر با تخصیص نقش‌های پیش‌فرض و فعال‌سازی وضعیت.

3- بررسی وجود کلید عمومی برای کاربر.

4- دریافت کلید عمومی از سرویس Wallet در صورت عدم وجود کلید.

5- تولید Access Token و Refresh Token.

6- ذخیره اطلاعات سشن کاربر جهت پیگیری.


دریافت کلید عمومی با کد ملی

نام متد: GetPublicKeyByNationalID
توضیحات: با برقراری ارتباط gRPC با سرویس Wallet، کلید عمومی مربوط به کد ملی کاربر را بازیابی می‌کند.

ورودی‌ها:

nationalId: کد ملی کاربر.

خروجی‌ها:

pubKey: کلید عمومی مربوط به کاربر.

جریان عملکرد:

1- اتصال به سرویس Wallet از طریق gRPC.

2- فراخوانی متد GetPublicKeyByNationalID از سرویس Wallet.

3- بازگرداندن کلید عمومی یا خطا.


بررسی وجود کلید عمومی

نام متد: GetPubKeyByNationalID
توضیحات: بررسی می‌کند که آیا کلید عمومی برای کد ملی مشخص‌شده وجود دارد یا خیر.

ورودی‌ها:

nationalId: کد ملی کاربر.

خروجی‌ها:

isExist: بولین جهت تعیین وجود کلید عمومی.

جریان عملکرد:

1- جستجوی کلید عمومی غیر تهی در پایگاه داده با استفاده از کد ملی.

2- بازگرداندن نتیجه بررسی و خطا.


افزودن کلید عمومی با شناسه کاربر

نام متد: AddPubKeyByUserId
توضیحات: کلید عمومی را به یک کاربر خاص در پایگاه داده اضافه می‌کند.

ورودی‌ها:

  • userId: شناسه کاربر.
  • pubKey: کلید عمومی برای افزودن.

خروجی‌ها:

error: خطا در صورت شکست عملیات.

جریان عملکرد:

1- به‌روزرسانی ستون public_key در جدول کاربران برای شناسه کاربر مشخص.


مستندات سرویس Wallet

معرفی

سرویس Wallet وظیفه تولید و مدیریت کلیدهای عمومی را بر عهده دارد. این سرویس از یک HD Wallet با کلید مادر (Master Key) برای ایجاد کلیدهای عمومی استفاده می‌کند.

متدها و عملکردها

دریافت کلید عمومی با کد ملی

نام متد: GetPublicKeyByNationalID
توضیحات: کلید عمومی را بر اساس HD Wallet برای کد ملی مشخص تولید می‌کند.

ورودی‌ها:

userNationalId: کد ملی کاربر.

خروجی‌ها:

pubKey: کلید عمومی تولید شده.

جریان عملکرد:

1- تبدیل کد ملی به قالب مناسب جهت تولید کلید.

2- استفاده از bip32 برای خواندن کلید مادر.

3- تولید کلید فرزند با استفاده از کد ملی.

4- ایجاد هش SHA-256 از کلید فرزند.

5- تولید کلید Stellar از طریق هش ایجاد شده.

6- بازگرداندن آدرس عمومی Stellar.


نحوه تعامل سرویس‌ها

جریان ورود کاربر:

1- سرویس Auth احراز هویت کاربر را انجام داده و اطمینان حاصل می‌کند که کلید عمومی برای هر کاربر وجود دارد.

2- در صورت عدم وجود کلید عمومی، سرویس Wallet برای تولید کلید عمومی فراخوانی می‌شود.

تولید کلید عمومی:

1- سرویس Wallet بر اساس کد ملی و با استفاده از ساختار HD Wallet کلیدهای عمومی را تولید می‌کند.