diff --git a/src/models/User.ts b/src/models/User.ts index 971e8d20..589c2d09 100644 --- a/src/models/User.ts +++ b/src/models/User.ts @@ -8,7 +8,6 @@ export interface User { username: string; // username max length 32, min 2 discriminator: string; // #0001 4 digit long string from #0001 - #9999 avatar: string | null; // hash of the user avatar - fingerprints: string[]; // array of fingerprints -> used to prevent multiple accounts phone?: string; // phone number of the user desktop: boolean; // if the user has desktop app installed mobile: boolean; // if the user has mobile app installed @@ -16,7 +15,6 @@ export interface User { premium_type: number; // nitro level bot: boolean; // if user is bot system: boolean; // shouldn't be used, the api sents this field type true, if the genetaed message comes from a system generated author - level: string; // organization permission level (owner, moderator, user) nsfw_allowed: boolean; // if the user is older than 18 (resp. Config) mfa_enabled: boolean; // if multi factor authentication is enabled created_at: Date; // registration date @@ -24,12 +22,8 @@ export interface User { email?: string; // email of the user flags: bigint; // UserFlags public_flags: bigint; - hash: string; // hash of the password, salt is saved in password (bcrypt) - guilds: bigint[]; // array of guild ids the user is part of - valid_tokens_since: Date; // all tokens with a previous issue date are invalid user_settings: UserSettings; - relationships: Relationship[]; - connected_accounts: ConnectedAccount[]; + user_data: UserData; presence: { status: Status; activities: Activity[]; @@ -37,6 +31,16 @@ export interface User { }; } +// Privat user data: +export interface UserData { + valid_tokens_since: Date; // all tokens with a previous issue date are invalid + relationships: Relationship[]; + connected_accounts: ConnectedAccount[]; + guilds: bigint[]; // array of guild ids the user is part of + hash: string; // hash of the password, salt is saved in password (bcrypt) + fingerprints: string[]; // array of fingerprints -> used to prevent multiple accounts +} + export interface UserDocument extends User, Document { id: bigint; } @@ -118,7 +122,6 @@ export const UserSchema = new Schema({ username: String, discriminator: String, avatar: String, - fingerprints: [String], phone: String, desktop: Boolean, mobile: Boolean, @@ -133,9 +136,33 @@ export const UserSchema = new Schema({ email: String, flags: Types.Long, // TODO: automatically convert Types.Long to BitField of UserFlags public_flags: Types.Long, - hash: String, // hash of the password, salt is saved in password (bcrypt) - guilds: [Types.Long], // array of guild ids the user is part of - valid_tokens_since: Date, // all tokens with a previous issue date are invalid + user_data: { + fingerprints: [String], + hash: String, // hash of the password, salt is saved in password (bcrypt) + guilds: [Types.Long], // array of guild ids the user is part of + valid_tokens_since: Date, // all tokens with a previous issue date are invalid + relationships: [ + { + id: Types.Long, + nickname: String, + type: Number, + user_id: Types.Long, + }, + ], + connected_accounts: [ + { + access_token: String, + friend_sync: Boolean, + id: String, + name: String, + revoked: Boolean, + show_activity: Boolean, + type: String, + verifie: Boolean, + visibility: Number, + }, + ], + }, user_settings: { afk_timeout: Number, allow_accessibility_detection: Boolean, @@ -182,27 +209,7 @@ export const UserSchema = new Schema({ theme: String, // dark timezone_offset: Number, // e.g -60, }, - relationships: [ - { - id: Types.Long, - nickname: String, - type: Number, - user_id: Types.Long, - }, - ], - connected_accounts: [ - { - access_token: String, - friend_sync: Boolean, - id: String, - name: String, - revoked: Boolean, - show_activity: Boolean, - type: String, - verifie: Boolean, - visibility: Number, - }, - ], + presence: { status: String, activities: [Activity],