mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-07-15 18:27:05 +00:00
Refactor Visitor Password Controller and Service for Enhanced Security and Functionality
This commit is contained in:
@ -49,8 +49,8 @@ export class VisitorPasswordController {
|
||||
);
|
||||
}
|
||||
}
|
||||
// @ApiBearerAuth()
|
||||
// @UseGuards(JwtAuthGuard)
|
||||
@ApiBearerAuth()
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Post('temporary-password/online/one-time')
|
||||
async addOnlineTemporaryPassword(
|
||||
@Body() addDoorLockOnlineOneTimeDto: AddDoorLockOnlineOneTimeDto,
|
||||
@ -86,8 +86,6 @@ export class VisitorPasswordController {
|
||||
|
||||
return {
|
||||
statusCode: HttpStatus.CREATED,
|
||||
success: true,
|
||||
message: 'offline temporary password added successfully',
|
||||
data: temporaryPassword,
|
||||
};
|
||||
} catch (error) {
|
||||
@ -112,8 +110,6 @@ export class VisitorPasswordController {
|
||||
|
||||
return {
|
||||
statusCode: HttpStatus.CREATED,
|
||||
success: true,
|
||||
message: 'offline temporary password added successfully',
|
||||
data: temporaryPassword,
|
||||
};
|
||||
} catch (error) {
|
||||
@ -123,7 +119,9 @@ export class VisitorPasswordController {
|
||||
);
|
||||
}
|
||||
}
|
||||
@Get('')
|
||||
@ApiBearerAuth()
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Get()
|
||||
async GetVisitorPassword() {
|
||||
try {
|
||||
return await this.visitorPasswordService.getPasswords();
|
||||
@ -134,6 +132,8 @@ export class VisitorPasswordController {
|
||||
);
|
||||
}
|
||||
}
|
||||
@ApiBearerAuth()
|
||||
@UseGuards(JwtAuthGuard)
|
||||
@Get('/devices')
|
||||
async GetVisitorDevices() {
|
||||
try {
|
||||
|
@ -17,6 +17,8 @@ import {
|
||||
import { EmailService } from '@app/common/util/email.service';
|
||||
import { PasswordEncryptionService } from 'src/door-lock/services/encryption.services';
|
||||
import { DoorLockService } from 'src/door-lock/services';
|
||||
import { GetDeviceDetailsInterface } from 'src/device/interfaces/get.device.interface';
|
||||
import { DeviceService } from 'src/device/services';
|
||||
|
||||
@Injectable()
|
||||
export class VisitorPasswordService {
|
||||
@ -26,6 +28,7 @@ export class VisitorPasswordService {
|
||||
private readonly deviceRepository: DeviceRepository,
|
||||
private readonly emailService: EmailService,
|
||||
private readonly doorLockService: DoorLockService,
|
||||
private readonly deviceService: DeviceService,
|
||||
private readonly passwordEncryptionService: PasswordEncryptionService,
|
||||
) {
|
||||
const accessKey = this.configService.get<string>('auth-config.ACCESS_KEY');
|
||||
@ -383,7 +386,7 @@ export class VisitorPasswordService {
|
||||
);
|
||||
|
||||
// Return results if there are successful operations
|
||||
if (successfulResults.length > 0) {
|
||||
if (successfulResults?.length > 0) {
|
||||
return {
|
||||
successOperations: successfulResults,
|
||||
failedOperations: failedResults,
|
||||
@ -416,9 +419,6 @@ export class VisitorPasswordService {
|
||||
const data = [];
|
||||
deviceIds.forEach((deviceId) => {
|
||||
data.push(
|
||||
this.doorLockService
|
||||
.getOfflineMultipleTimeTemporaryPasswords(deviceId.uuid, true)
|
||||
.catch(() => {}),
|
||||
this.doorLockService
|
||||
.getOnlineTemporaryPasswordsOneTime(deviceId.uuid, true)
|
||||
.catch(() => {}),
|
||||
@ -428,6 +428,9 @@ export class VisitorPasswordService {
|
||||
this.doorLockService
|
||||
.getOfflineOneTimeTemporaryPasswords(deviceId.uuid, true)
|
||||
.catch(() => {}),
|
||||
this.doorLockService
|
||||
.getOfflineMultipleTimeTemporaryPasswords(deviceId.uuid, true)
|
||||
.catch(() => {}),
|
||||
);
|
||||
});
|
||||
return (await Promise.all(data)).flat().filter((datum) => {
|
||||
@ -436,13 +439,27 @@ export class VisitorPasswordService {
|
||||
}
|
||||
|
||||
async getAllPassDevices() {
|
||||
return await this.deviceRepository.find({
|
||||
const devices = await this.deviceRepository.find({
|
||||
where: {
|
||||
productDevice: {
|
||||
prodType: ProductType.DL,
|
||||
},
|
||||
},
|
||||
relations: ['productDevice'],
|
||||
});
|
||||
const devicesData = await Promise.all(
|
||||
devices?.map(async (device) => {
|
||||
return {
|
||||
productUuid: device.productDevice.uuid,
|
||||
productType: device.productDevice.prodType,
|
||||
...(await this.deviceService.getDeviceDetailsByDeviceIdTuya(
|
||||
device.deviceTuyaUuid,
|
||||
)),
|
||||
uuid: device.uuid,
|
||||
} as GetDeviceDetailsInterface;
|
||||
}),
|
||||
);
|
||||
return devicesData;
|
||||
}
|
||||
|
||||
async addOnlineTemporaryPasswordOneTime(
|
||||
@ -622,7 +639,7 @@ export class VisitorPasswordService {
|
||||
try {
|
||||
const path = `/v1.0/devices/${doorLockUuid}/door-lock/temp-password`;
|
||||
let scheduleList;
|
||||
if (addDeviceObj.scheduleList.length > 0) {
|
||||
if (addDeviceObj?.scheduleList?.length > 0) {
|
||||
scheduleList = addDeviceObj.scheduleList.map((schedule) => ({
|
||||
effective_time: this.timeToMinutes(schedule.effectiveTime),
|
||||
invalid_time: this.timeToMinutes(schedule.invalidTime),
|
||||
@ -640,19 +657,16 @@ export class VisitorPasswordService {
|
||||
invalid_time: addDeviceObj.invalidTime,
|
||||
password_type: 'ticket',
|
||||
ticket_id: addDeviceObj.ticketId,
|
||||
...(addDeviceObj.scheduleList.length > 0 && {
|
||||
...(addDeviceObj?.scheduleList?.length > 0 && {
|
||||
schedule_list: scheduleList,
|
||||
}),
|
||||
|
||||
type: '0',
|
||||
},
|
||||
});
|
||||
console.log('response', response);
|
||||
|
||||
return response as createTickInterface;
|
||||
} catch (error) {
|
||||
console.log('error', error);
|
||||
|
||||
throw new HttpException(
|
||||
error.msg || 'Error adding online temporary password from Tuya',
|
||||
HttpStatus.INTERNAL_SERVER_ERROR,
|
||||
@ -789,12 +803,9 @@ export class VisitorPasswordService {
|
||||
type: '1',
|
||||
},
|
||||
});
|
||||
console.log('response', response);
|
||||
|
||||
return response as createTickInterface;
|
||||
} catch (error) {
|
||||
console.log('error', error);
|
||||
|
||||
throw new HttpException(
|
||||
error.msg || 'Error adding online temporary password from Tuya',
|
||||
HttpStatus.INTERNAL_SERVER_ERROR,
|
||||
|
@ -7,6 +7,10 @@ import { DeviceRepository } from '@app/common/modules/device/repositories';
|
||||
import { EmailService } from '@app/common/util/email.service';
|
||||
import { PasswordEncryptionService } from 'src/door-lock/services/encryption.services';
|
||||
import { DoorLockModule } from 'src/door-lock/door.lock.module';
|
||||
import { DeviceService } from 'src/device/services';
|
||||
import { ProductRepository } from '@app/common/modules/product/repositories';
|
||||
import { DeviceStatusFirebaseService } from '@app/common/firebase/devices-status/services/devices-status.service';
|
||||
import { SpaceRepository } from '@app/common/modules/space/repositories';
|
||||
@Module({
|
||||
imports: [ConfigModule, DeviceRepositoryModule, DoorLockModule],
|
||||
controllers: [VisitorPasswordController],
|
||||
@ -14,6 +18,10 @@ import { DoorLockModule } from 'src/door-lock/door.lock.module';
|
||||
VisitorPasswordService,
|
||||
EmailService,
|
||||
PasswordEncryptionService,
|
||||
DeviceService,
|
||||
ProductRepository,
|
||||
DeviceStatusFirebaseService,
|
||||
SpaceRepository,
|
||||
DeviceRepository,
|
||||
],
|
||||
exports: [VisitorPasswordService],
|
||||
|
Reference in New Issue
Block a user