Demo

UserService

Core user store မှ user CRUD၊ authentication၊ token refresh နှင့် login-device session ထိန်းချုပ်မှုကို ပေးပါသည်။

Inject

TSXinject
1import { 2 ContainerRegistryManager, 3 UserService, 4 Inject, 5 Service, 6} from "@quan-erp/shared-backend-core"; 7 8@Service() 9export class MyPluginService { 10 @Inject(UserService, ContainerRegistryManager.BUILTIN_PLUGIN) 11 private userService: UserService; 12}

Lookup method များ

Plugin မှ user ဇယားကို ပြန်မ query ဘဲ user များကို ဤ method များဖြင့် resolve လုပ်ရပါသည်။

  • findById(id: string) — string id ဖြင့် user ရှာဖွေပါသည်
  • findByUserId(id: number, includePassword = false) — numeric id; password စစ်မှသာ includePassword သုံးရပါသည်
  • findByIds(ids: number[]) — အစုလိုက် ရှာဖွေမှု
  • findByUsername(username, includePassword = false) — login name ဖြင့် ရှာဖွေပါသည်
  • find({ skip, limit, search }) — စာမျက်နှာခွဲ စာရင်း; search သည် name/username နှင့် ကိုက်ညီပါသည်
TSXlookup
1import { 2 ContainerRegistryManager, 3 Inject, 4 Service, 5 UserService, 6} from "@quan-erp/shared-backend-core"; 7 8@Service() 9export class OrderAssignService { 10 @Inject(UserService, ContainerRegistryManager.BUILTIN_PLUGIN) 11 private userService: UserService; 12 13 async resolveAssignee(userId: number) { 14 const user = await this.userService.findByUserId(userId); 15 if (!user) throw new Error("User not found"); 16 return user; 17 } 18 19 async searchStaff(q: string) { 20 return this.userService.find({ skip: 0, limit: 20, search: q }); 21 } 22}

Create / update method များ

  • create(user: CreateUserDto) — user ဖန်တီးပါသည်
  • update(id, data) — user အကွက်များကို patch လုပ်ပါသည်
  • setActive(userId, flag) — account ကို enable/disable လုပ်ပါသည်
  • changePassword(data) — လက်ရှိ password စစ်ပြီး ပြောင်းပါသည်
  • resetPassword(data) — admin/reset flow ဖြင့် password reset လုပ်ပါသည်
TSXcreate
1import { 2 ContainerRegistryManager, 3 Inject, 4 Service, 5 UserService, 6} from "@quan-erp/shared-backend-core"; 7 8@Service() 9export class StaffOnboardService { 10 @Inject(UserService, ContainerRegistryManager.BUILTIN_PLUGIN) 11 private userService: UserService; 12 13 async onboard() { 14 await this.userService.create({ 15 username: "cashier01", 16 name: "Cashier One", 17 password: "temporary-password", 18 roleId: 2, 19 isOwner: false, 20 }); 21 } 22}

Auth & session method များ

Token ကို ကိုယ်တိုင် မထုတ်ဘဲ ဤ method များကို အသုံးပြုရပါသည်။

  • signin({ username, password }, info?) — access/refresh token ပြန်ပေးပါသည်
  • refreshToken(refreshToken) — refresh token မှ access token အသစ် ရယူပါသည်
  • checkToken(refreshToken) — refresh token သက်တမ်းရှိ/မရှိ စစ်ဆေးပါသည်
  • signout(refreshToken) — session တစ်ခု ပယ်ဖျက်ပါသည်
  • getLoginDevices(...) — အသက်ဝင်နေသော device/session စာရင်း
  • logoutOtherDevice(ids) — ရွေးထားသော device session များကို revoke လုပ်ပါသည်
  • logoutAllDevices(userId) — user ၏ session အားလုံးကို revoke လုပ်ပါသည်
TSXsignin
1import { 2 ContainerRegistryManager, 3 Inject, 4 Service, 5 UserService, 6} from "@quan-erp/shared-backend-core"; 7 8@Service() 9export class AuthFacadeService { 10 @Inject(UserService, ContainerRegistryManager.BUILTIN_PLUGIN) 11 private userService: UserService; 12 13 async login(username: string, password: string) { 14 return this.userService.signin( 15 { username, password }, 16 { ipAddress: "127.0.0.1", device: "web" } 17 ); 18 } 19 20 async logoutEverywhere(userId: number) { 21 await this.userService.logoutAllDevices(userId); 22 } 23}