import { Profile, ContactInfo, Gender, Server, UserRegisterInfo } from "@hibas123/openauth-internalapi"; import type { SessionContext } from "../index"; import Mail from "../../../models/mail"; import User from "../../../models/user"; import { RequireLogin } from "../../../helper/login"; export default class AccountService extends Server.AccountService { Register(regcode: string, info: UserRegisterInfo, ctx: SessionContext): Promise { throw new Error("Method not implemented."); } @RequireLogin() async GetProfile(ctx: SessionContext): Promise { if (!ctx.user) throw new Error("Not logged in"); return { id: ctx.user.uid, username: ctx.user.username, name: ctx.user.name, birthday: ctx.user.birthday.valueOf(), gender: ctx.user.gender as number as Gender, } } @RequireLogin() async UpdateProfile(info: Profile, ctx: SessionContext): Promise { if (!ctx.user) throw new Error("Not logged in"); ctx.user.name = info.name; ctx.user.birthday = new Date(info.birthday); ctx.user.gender = info.gender as number; await User.save(ctx.user); } @RequireLogin() async GetContactInfos(ctx: SessionContext): Promise { if (!ctx.user) throw new Error("Not logged in"); let mails = await Promise.all( ctx.user.mails.map((mail) => Mail.findById(mail)) ); let contact = { mail: mails.filter((e) => !!e), phone: ctx.user.phones, }; return contact; } }