vr-models 1.0.44 → 1.0.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,7 +10,7 @@ export interface DeviceSessionPayload {
10
10
  deviceSerialNumber: string;
11
11
  minutesGranted: number;
12
12
  }
13
- export declare const EVENT_ACTIONS: readonly ["USER_READ", "USER_CREATED", "USER_UPDATED", "USER_DELETED", "USER_SUSPENDED", "USER_BANNED", "USER_VERIFIED", "USER_UPGRADED_TO_RIDER", "USERS_LISTED", "ADMIN_FORGOT_PASSWORD", "ADMIN_LOGGED_IN", "ADMIN_LOGGED_OUT", "PASSENGER_ACCOUNT_DEACTIVATED", "PASSENGER_ACCOUNT_DELETED", "AGENT_CREATED_RIDER", "AGENT_UPDATED_RIDER", "ADMIN_CREATED_USER", "ADMIN_UPDATED_USER", "SUPER_ADMIN_PASSWORD_CHANGED", "SUPER_ADMIN_CHANGED_USER_ACCOUNT_STATUS", "SUPER_ADMIN_UPDATED_USER", "SUPER_ADMIN_CREATED_USER", "PRODUCT_CREATED", "PRODUCT_READ", "PRODUCT_UPDATED", "PRODUCT_DELETED", "PRODUCTS_LISTED", "PRODUCTS_ACTIVATED", "PRODUCTS_DEACTIVATED", "PRODUCT_STOCK_SET_MANUALLY", "PRODUCT_STOCK_INCREMENTED", "PRODUCT_STOCK_DECREMENTED", "PRICING_CREATED", "PRICING_READ", "PRICING_UPDATED", "PRICING_DELETED", "DEVICE_CREATED", "DEVICES_BULK_CREATED", "DEVICE_ASSIGNED", "DEVICE_READ", "DEVICE_UPDATED", "DEVICES_LISTED", "DEVICE_LOCKED", "DEVICE_UNLOCKED", "DEVICE_DISABLED", "DEVICE_REACTIVATED", "DEVICE_DELETED_PERMANENTLY", "DEVICE_REPOSSESSED", "DEVICE_PAYMENT_PLAN_CREATED", "DEVICE_PAYMENT_PLAN_READ", "DEVICE_PAYMENT_PLAN_UPDATED", "DEVICE_PAYMENT_PLAN_MARKED_DEFAULTED", "DEVICE_PAYMENT_PLAN_SOFT_DELETED", "DEVICE_PAYMENT_PLAN_DELETED_PERMANENTLY", "PAYMENT_RECORDED", "PAYMENT_READ", "PAYMENTS_LISTED", "TRANSACTION_READ", "TRANSACTIONS_LISTED", "EVENT_LOG_READ", "EVENT_LOGS_LISTED", "SECURITY_CLEARANCE_MANAGED", "DEVICE_LOCK_OVERRIDDEN", "SESSION_EXTENDED"];
13
+ export declare const EVENT_ACTIONS: readonly ["USER_READ", "USER_CREATED", "USER_UPDATED", "USER_DELETED", "USER_SUSPENDED", "USER_BANNED", "USER_VERIFIED", "USER_UPGRADED_TO_RIDER", "USERS_LISTED", "ADMIN_FORGOT_PASSWORD", "ADMIN_LOGGED_IN", "ADMIN_LOGGED_OUT", "PASSENGER_ACCOUNT_DEACTIVATED", "PASSENGER_ACCOUNT_DELETED", "AGENT_CREATED_RIDER", "AGENT_UPDATED_RIDER", "ADMIN_CREATED_USER", "ADMIN_UPDATED_USER", "ADMIN_CHANGED_PASSWORD", "ADMIN_RESET_USER_PASSWORD", "ADMIN_BULK_PASSWORD_RESET", "SUPER_ADMIN_PASSWORD_CHANGED", "SUPER_ADMIN_CHANGED_USER_ACCOUNT_STATUS", "SUPER_ADMIN_UPDATED_USER", "SUPER_ADMIN_CREATED_USER", "PRODUCT_CREATED", "PRODUCT_READ", "PRODUCT_UPDATED", "PRODUCT_DELETED", "PRODUCTS_LISTED", "PRODUCTS_ACTIVATED", "PRODUCTS_DEACTIVATED", "PRODUCT_STOCK_SET_MANUALLY", "PRODUCT_STOCK_INCREMENTED", "PRODUCT_STOCK_DECREMENTED", "PRICING_CREATED", "PRICING_READ", "PRICING_UPDATED", "PRICING_DELETED", "DEVICE_CREATED", "DEVICES_BULK_CREATED", "DEVICE_ASSIGNED", "DEVICE_READ", "DEVICE_UPDATED", "DEVICES_LISTED", "DEVICE_LOCKED", "DEVICE_UNLOCKED", "DEVICE_DISABLED", "DEVICE_REACTIVATED", "DEVICE_DELETED_PERMANENTLY", "DEVICE_REPOSSESSED", "DEVICE_PAYMENT_PLAN_CREATED", "DEVICE_PAYMENT_PLAN_READ", "DEVICE_PAYMENT_PLAN_UPDATED", "DEVICE_PAYMENT_PLAN_MARKED_DEFAULTED", "DEVICE_PAYMENT_PLAN_SOFT_DELETED", "DEVICE_PAYMENT_PLAN_DELETED_PERMANENTLY", "PAYMENT_RECORDED", "PAYMENT_READ", "PAYMENTS_LISTED", "TRANSACTION_READ", "TRANSACTIONS_LISTED", "EVENT_LOG_READ", "EVENT_LOGS_LISTED", "SECURITY_CLEARANCE_MANAGED", "DEVICE_LOCK_OVERRIDDEN", "SESSION_EXTENDED"];
14
14
  export type EventAction = (typeof EVENT_ACTIONS)[number];
15
15
  export interface EventLogAttributes {
16
16
  id: string;
@@ -22,6 +22,9 @@ exports.EVENT_ACTIONS = [
22
22
  "AGENT_UPDATED_RIDER",
23
23
  "ADMIN_CREATED_USER",
24
24
  "ADMIN_UPDATED_USER",
25
+ "ADMIN_CHANGED_PASSWORD",
26
+ "ADMIN_RESET_USER_PASSWORD",
27
+ "ADMIN_BULK_PASSWORD_RESET",
25
28
  "SUPER_ADMIN_PASSWORD_CHANGED",
26
29
  "SUPER_ADMIN_CHANGED_USER_ACCOUNT_STATUS",
27
30
  "SUPER_ADMIN_UPDATED_USER",
@@ -12,4 +12,5 @@ export * from "./installment.models";
12
12
  export * from "./ban.models";
13
13
  export * from "./suspension.models";
14
14
  export * from "./appSpecs.models";
15
- export type { UserModel, TransactionModel, SecurityClearanceModel, ProductModel, PricingModel, PaymentModel, IdempotencyRecordModel, EventLogModel, DevicePaymentPlanModel, DeviceModel, InstallmentModel, BanModel, SuspensionModel, AppSpecsModel, } from "./types";
15
+ export * from "./phoneContact.models";
16
+ export type { UserModel, TransactionModel, SecurityClearanceModel, ProductModel, PricingModel, PaymentModel, IdempotencyRecordModel, EventLogModel, DevicePaymentPlanModel, DeviceModel, InstallmentModel, BanModel, SuspensionModel, AppSpecsModel, PhoneContactModel, } from "./types";
@@ -28,3 +28,4 @@ __exportStar(require("./installment.models"), exports);
28
28
  __exportStar(require("./ban.models"), exports);
29
29
  __exportStar(require("./suspension.models"), exports);
30
30
  __exportStar(require("./appSpecs.models"), exports);
31
+ __exportStar(require("./phoneContact.models"), exports);
@@ -55,11 +55,6 @@ export declare class PhoneContact extends Model<InferAttributes<PhoneContact>, I
55
55
  user?: NonAttribute<User>;
56
56
  static initialize(sequelize: any): void;
57
57
  static associate(models: Record<string, ModelStatic<Model>>): void;
58
- generateOTP(length?: number): Promise<string>;
59
- verifyOTP(otp: string): Promise<boolean>;
60
- markAsVerified(): Promise<void>;
61
- markAsPrimary(): Promise<void>;
62
- unmarkAsPrimary(): Promise<void>;
63
58
  deactivate(reason?: string): Promise<void>;
64
59
  reactivate(): Promise<void>;
65
60
  isLocked(): boolean;
@@ -111,89 +111,6 @@ class PhoneContact extends vr_migrations_1.Model {
111
111
  onUpdate: "CASCADE",
112
112
  });
113
113
  }
114
- // Custom instance methods
115
- async generateOTP(length = 6) {
116
- const digits = "0123456789";
117
- let otp = "";
118
- for (let i = 0; i < length; i++) {
119
- otp += digits[Math.floor(Math.random() * 10)];
120
- }
121
- const expiryMinutes = parseInt(process.env.OTP_EXPIRY_MINUTES || "15");
122
- const expiresAt = new Date();
123
- expiresAt.setMinutes(expiresAt.getMinutes() + expiryMinutes);
124
- this.otp = otp;
125
- this.otpExpiresAt = expiresAt;
126
- // Update metadata
127
- this.metadata = {
128
- ...this.metadata,
129
- lastOtpSentAt: new Date(),
130
- otpAttempts: 0,
131
- };
132
- await this.save();
133
- return otp;
134
- }
135
- async verifyOTP(otp) {
136
- // Check if locked
137
- if (this.metadata.isLocked && this.metadata.lockedUntil) {
138
- if (new Date() < new Date(this.metadata.lockedUntil)) {
139
- return false;
140
- }
141
- // Unlock if past lock time
142
- this.metadata.isLocked = false;
143
- this.metadata.lockedUntil = undefined;
144
- }
145
- // Check OTP
146
- if (!this.otp || !this.otpExpiresAt || this.otp !== otp) {
147
- // Increment failed attempts
148
- const attempts = (this.metadata.otpAttempts || 0) + 1;
149
- this.metadata = {
150
- ...this.metadata,
151
- otpAttempts: attempts,
152
- lastFailedAttemptAt: new Date(),
153
- };
154
- // Lock after 5 failed attempts
155
- if (attempts >= 5) {
156
- const lockMinutes = parseInt(process.env.OTP_LOCK_MINUTES || "30");
157
- const lockedUntil = new Date();
158
- lockedUntil.setMinutes(lockedUntil.getMinutes() + lockMinutes);
159
- this.metadata.isLocked = true;
160
- this.metadata.lockedUntil = lockedUntil;
161
- }
162
- await this.save();
163
- return false;
164
- }
165
- // Check if expired
166
- if (new Date() > new Date(this.otpExpiresAt)) {
167
- return false;
168
- }
169
- // Clear OTP on success
170
- this.otp = null;
171
- this.otpExpiresAt = null;
172
- this.metadata = {
173
- ...this.metadata,
174
- otpAttempts: 0,
175
- lastFailedAttemptAt: undefined,
176
- };
177
- await this.save();
178
- return true;
179
- }
180
- async markAsVerified() {
181
- this.isVerified = true;
182
- this.verifiedAt = new Date();
183
- await this.save();
184
- }
185
- async markAsPrimary() {
186
- // If this contact is being set as primary, ensure it's verified
187
- if (!this.isVerified) {
188
- throw new Error("Cannot set unverified phone as primary");
189
- }
190
- this.isPrimary = true;
191
- await this.save();
192
- }
193
- async unmarkAsPrimary() {
194
- this.isPrimary = false;
195
- await this.save();
196
- }
197
114
  async deactivate(reason) {
198
115
  this.isActive = false;
199
116
  this.metadata = {
@@ -12,3 +12,4 @@ export type { InstallmentModel } from "./installment.models";
12
12
  export type { BanModel } from "./ban.models";
13
13
  export type { SuspensionModel } from "./suspension.models";
14
14
  export type { AppSpecsModel } from "./appSpecs.models";
15
+ export type { PhoneContactModel } from "./phoneContact.models";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vr-models",
3
- "version": "1.0.44",
3
+ "version": "1.0.46",
4
4
  "description": "Shared database models package for VR applications",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",