This commit is contained in:
2025-07-23 14:26:31 +09:00
parent afa9c4fe39
commit a3f591ab3a
35 changed files with 210 additions and 64 deletions

View File

@@ -10,17 +10,24 @@ var __metadata = (this && this.__metadata) || function (k, v) {
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ChangePasswordDto = void 0;
const openapi = require("@nestjs/swagger");
const swagger_1 = require("@nestjs/swagger");
const class_validator_1 = require("class-validator");
class ChangePasswordDto {
currentPassword;
newPassword;
static _OPENAPI_METADATA_FACTORY() {
return { currentPassword: { required: true, type: () => String }, newPassword: { required: true, type: () => String, minLength: 4 } };
}
}
exports.ChangePasswordDto = ChangePasswordDto;
__decorate([
(0, swagger_1.ApiProperty)({ description: '기존 비밀번호', example: 'oldPassword' }),
(0, class_validator_1.IsString)(),
__metadata("design:type", String)
], ChangePasswordDto.prototype, "currentPassword", void 0);
__decorate([
(0, swagger_1.ApiProperty)({ description: '신규 비밀번호', example: 'newPassword' }),
(0, class_validator_1.IsString)(),
(0, class_validator_1.MinLength)(4),
__metadata("design:type", String)

View File

@@ -1 +1 @@
{"version":3,"file":"change-password.dto.js","sourceRoot":"","sources":["../../../src/users/dto/change-password.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAsD;AAEtD,MAAa,iBAAiB;IAEnB,eAAe,CAAS;IAIxB,WAAW,CAAS;CAC9B;AAPD,8CAOC;AALU;IADR,IAAA,0BAAQ,GAAE;;0DACsB;AAIxB;IAFR,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,CAAC,CAAC;;sDACgB"}
{"version":3,"file":"change-password.dto.js","sourceRoot":"","sources":["../../../src/users/dto/change-password.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAAsD;AAEtD,MAAa,iBAAiB;IAGnB,eAAe,CAAS;IAKxB,WAAW,CAAS;;;;CAC9B;AATD,8CASC;AANU;IAFR,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IAC/D,IAAA,0BAAQ,GAAE;;0DACsB;AAKxB;IAHR,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IAC/D,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,CAAC,CAAC;;sDACgB"}

View File

@@ -10,23 +10,32 @@ var __metadata = (this && this.__metadata) || function (k, v) {
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.CreateUserDto = void 0;
const openapi = require("@nestjs/swagger");
const swagger_1 = require("@nestjs/swagger");
const class_validator_1 = require("class-validator");
class CreateUserDto {
name;
email;
password;
static _OPENAPI_METADATA_FACTORY() {
return { name: { required: true, type: () => String }, email: { required: false, type: () => String, format: "email" }, password: { required: true, type: () => String, minLength: 4 } };
}
}
exports.CreateUserDto = CreateUserDto;
__decorate([
(0, swagger_1.ApiProperty)({ description: '사용자 이름', example: 'username' }),
(0, class_validator_1.IsString)(),
(0, class_validator_1.IsNotEmpty)(),
__metadata("design:type", String)
], CreateUserDto.prototype, "name", void 0);
__decorate([
(0, swagger_1.ApiProperty)({ description: '사용자 이메일', example: 'user@email.com' }),
(0, class_validator_1.IsOptional)(),
(0, class_validator_1.IsEmail)(),
__metadata("design:type", String)
], CreateUserDto.prototype, "email", void 0);
__decorate([
(0, swagger_1.ApiProperty)({ description: '비밀번호', example: 'password' }),
(0, class_validator_1.IsString)(),
(0, class_validator_1.MinLength)(4),
__metadata("design:type", String)

View File

@@ -1 +1 @@
{"version":3,"file":"create-user.dto.js","sourceRoot":"","sources":["../../../src/users/dto/create-user.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA2E;AAE3E,MAAa,aAAa;IAEf,IAAI,CAAS;IAIb,KAAK,CAAU;IAIf,QAAQ,CAAS;CAC3B;AAXD,sCAWC;AATU;IADR,IAAA,0BAAQ,GAAE;;2CACW;AAIb;IAFR,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;;4CACc;AAIf;IAFR,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,CAAC,CAAC;;+CACa"}
{"version":3,"file":"create-user.dto.js","sourceRoot":"","sources":["../../../src/users/dto/create-user.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,6CAA8C;AAC9C,qDAAuF;AAEvF,MAAa,aAAa;IAIf,IAAI,CAAS;IAKb,KAAK,CAAU;IAKf,QAAQ,CAAS;;;;CAC3B;AAfD,sCAeC;AAXU;IAHR,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IAC3D,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;;2CACS;AAKb;IAHR,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAClE,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;;4CACc;AAKf;IAHR,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACzD,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,CAAC,CAAC;;+CACa"}

View File

@@ -1,10 +1,36 @@
"use strict";
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UserInfoResponseDto = void 0;
const openapi = require("@nestjs/swagger");
const swagger_1 = require("@nestjs/swagger");
class UserInfoResponseDto {
id;
name;
email;
static _OPENAPI_METADATA_FACTORY() {
return { id: { required: true, type: () => Number }, name: { required: true, type: () => String }, email: { required: false, type: () => String } };
}
}
exports.UserInfoResponseDto = UserInfoResponseDto;
__decorate([
(0, swagger_1.ApiProperty)({ description: '사용자 아이디', example: 1 }),
__metadata("design:type", Number)
], UserInfoResponseDto.prototype, "id", void 0);
__decorate([
(0, swagger_1.ApiProperty)({ description: '사용자 이름', example: 'username' }),
__metadata("design:type", String)
], UserInfoResponseDto.prototype, "name", void 0);
__decorate([
(0, swagger_1.ApiProperty)({ description: '사용자 이메일', example: 'user@email.com' }),
__metadata("design:type", String)
], UserInfoResponseDto.prototype, "email", void 0);
//# sourceMappingURL=user-info-response.dto.js.map

View File

@@ -1 +1 @@
{"version":3,"file":"user-info-response.dto.js","sourceRoot":"","sources":["../../../src/users/dto/user-info-response.dto.ts"],"names":[],"mappings":";;;AAAA,MAAa,mBAAmB;IAC9B,EAAE,CAAS;IACX,IAAI,CAAS;IACb,KAAK,CAAU;CAChB;AAJD,kDAIC"}
{"version":3,"file":"user-info-response.dto.js","sourceRoot":"","sources":["../../../src/users/dto/user-info-response.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,6CAA8C;AAE9C,MAAa,mBAAmB;IAE9B,EAAE,CAAS;IAGX,IAAI,CAAS;IAGb,KAAK,CAAU;;;;CAChB;AATD,kDASC;AAPC;IADC,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;+CACzC;AAGX;IADC,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;;iDAC/C;AAGb;IADC,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;;kDACpD"}

View File

@@ -10,6 +10,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.User = void 0;
const openapi = require("@nestjs/swagger");
const timestamped_entity_1 = require("../common/entities/timestamped.entity");
const typeorm_1 = require("typeorm");
let User = class User extends timestamped_entity_1.TimestampedEntity {
@@ -17,6 +18,9 @@ let User = class User extends timestamped_entity_1.TimestampedEntity {
name;
email;
password;
static _OPENAPI_METADATA_FACTORY() {
return { id: { required: true, type: () => Number }, name: { required: true, type: () => String }, email: { required: false, type: () => String }, password: { required: true, type: () => String } };
}
};
exports.User = User;
__decorate([

View File

@@ -1 +1 @@
{"version":3,"file":"user.entity.js","sourceRoot":"","sources":["../../src/users/user.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8EAA2E;AAC3E,qCAAiE;AAG1D,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,sCAAiB;IAEzC,EAAE,CAAS;IAGX,IAAI,CAAS;IAGb,KAAK,CAAU;IAGf,QAAQ,CAAS;CAClB,CAAA;AAZY,oBAAI;AAEf;IADC,IAAA,gCAAsB,GAAE;;gCACd;AAGX;IADC,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;kCACZ;AAGb;IADC,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mCAC1B;AAGf;IADC,IAAA,gBAAM,GAAE;;sCACQ;eAXN,IAAI;IADhB,IAAA,gBAAM,GAAE;GACI,IAAI,CAYhB"}
{"version":3,"file":"user.entity.js","sourceRoot":"","sources":["../../src/users/user.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,8EAA2E;AAC3E,qCAAiE;AAG1D,IAAM,IAAI,GAAV,MAAM,IAAK,SAAQ,sCAAiB;IAEzC,EAAE,CAAS;IAGX,IAAI,CAAS;IAGb,KAAK,CAAU;IAGf,QAAQ,CAAS;;;;CAClB,CAAA;AAZY,oBAAI;AAEf;IADC,IAAA,gCAAsB,GAAE;;gCACd;AAGX;IADC,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;;kCACZ;AAGb;IADC,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mCAC1B;AAGf;IADC,IAAA,gBAAM,GAAE;;sCACQ;eAXN,IAAI;IADhB,IAAA,gBAAM,GAAE;GACI,IAAI,CAYhB"}

View File

@@ -1,9 +1,9 @@
import { UsersService } from './users.service';
import { ChangePasswordDto } from './dto/change-password.dto';
import { SuccessResponseDto } from 'src/common/dto/sucees-response.dto';
import { AuthRequest } from 'src/common/interfaces/auth-request.interface';
import { UserInfoResponseDto } from './dto/user-info-response.dto';
export declare class UsersController {
private readonly userService;
constructor(userService: UsersService);
changePassword(req: AuthRequest, dto: ChangePasswordDto): Promise<SuccessResponseDto>;
changePassword(req: AuthRequest, dto: ChangePasswordDto): Promise<UserInfoResponseDto>;
}

View File

@@ -13,11 +13,13 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UsersController = void 0;
const openapi = require("@nestjs/swagger");
const common_1 = require("@nestjs/common");
const users_service_1 = require("./users.service");
const change_password_dto_1 = require("./dto/change-password.dto");
const jwt_auth_guard_1 = require("../auth/jwt-auth.guard");
const sucees_response_dto_1 = require("../common/dto/sucees-response.dto");
const swagger_1 = require("@nestjs/swagger");
const user_info_response_dto_1 = require("./dto/user-info-response.dto");
let UsersController = class UsersController {
userService;
constructor(userService) {
@@ -25,13 +27,16 @@ let UsersController = class UsersController {
}
async changePassword(req, dto) {
await this.userService.changePassword(req.user.userId, dto);
return sucees_response_dto_1.SuccessResponseDto.ok();
return await this.userService.findUserInfoByIdOrFail(req.user.userId);
}
};
exports.UsersController = UsersController;
__decorate([
(0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard),
(0, common_1.Patch)('password'),
(0, common_1.UseGuards)(jwt_auth_guard_1.JwtAuthGuard),
(0, swagger_1.ApiBearerAuth)(),
(0, swagger_1.ApiOkResponse)({ description: '성공', type: user_info_response_dto_1.UserInfoResponseDto }),
openapi.ApiResponse({ status: 200, type: require("./dto/user-info-response.dto").UserInfoResponseDto }),
__param(0, (0, common_1.Request)()),
__param(1, (0, common_1.Body)()),
__metadata("design:type", Function),
@@ -39,6 +44,7 @@ __decorate([
__metadata("design:returntype", Promise)
], UsersController.prototype, "changePassword", null);
exports.UsersController = UsersController = __decorate([
(0, swagger_1.ApiTags)('사용자'),
(0, common_1.Controller)('users'),
__metadata("design:paramtypes", [users_service_1.UsersService])
], UsersController);

View File

@@ -1 +1 @@
{"version":3,"file":"users.controller.js","sourceRoot":"","sources":["../../src/users/users.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA6E;AAC7E,mDAA+C;AAC/C,mEAA8D;AAC9D,2DAAuD;AACvD,2EAAwE;AAIjE,IAAM,eAAe,GAArB,MAAM,eAAe;IACG;IAA7B,YAA6B,WAAyB;QAAzB,gBAAW,GAAX,WAAW,CAAc;IAAG,CAAC;IAIpD,AAAN,KAAK,CAAC,cAAc,CACP,GAAgB,EACnB,GAAsB;QAE9B,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5D,OAAO,wCAAkB,CAAC,EAAE,EAAE,CAAC;IACjC,CAAC;CACF,CAAA;AAZY,0CAAe;AAKpB;IAFL,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACvB,IAAA,cAAK,EAAC,UAAU,CAAC;IAEf,WAAA,IAAA,gBAAO,GAAE,CAAA;IACT,WAAA,IAAA,aAAI,GAAE,CAAA;;6CAAM,uCAAiB;;qDAI/B;0BAXU,eAAe;IAD3B,IAAA,mBAAU,EAAC,OAAO,CAAC;qCAEwB,4BAAY;GAD3C,eAAe,CAY3B"}
{"version":3,"file":"users.controller.js","sourceRoot":"","sources":["../../src/users/users.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA6E;AAC7E,mDAA+C;AAC/C,mEAA8D;AAC9D,2DAAuD;AAEvD,6CAAwE;AACxE,yEAAmE;AAI5D,IAAM,eAAe,GAArB,MAAM,eAAe;IACG;IAA7B,YAA6B,WAAyB;QAAzB,gBAAW,GAAX,WAAW,CAAc;IAAG,CAAC;IAMpD,AAAN,KAAK,CAAC,cAAc,CACP,GAAgB,EACnB,GAAsB;QAE9B,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5D,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;CACF,CAAA;AAdY,0CAAe;AAOpB;IAJL,IAAA,cAAK,EAAC,UAAU,CAAC;IACjB,IAAA,kBAAS,EAAC,6BAAY,CAAC;IACvB,IAAA,uBAAa,GAAE;IACf,IAAA,uBAAa,EAAC,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,4CAAmB,EAAE,CAAC;;IAE7D,WAAA,IAAA,gBAAO,GAAE,CAAA;IACT,WAAA,IAAA,aAAI,GAAE,CAAA;;6CAAM,uCAAiB;;qDAI/B;0BAbU,eAAe;IAF3B,IAAA,iBAAO,EAAC,KAAK,CAAC;IACd,IAAA,mBAAU,EAAC,OAAO,CAAC;qCAEwB,4BAAY;GAD3C,eAAe,CAc3B"}