Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Alba María Álvarez
/
AppRecetas
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
40c6ed73
authored
Aug 30, 2025
by
Alba María Álvarez
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
feat(user): implementado changePassword en el repositorio, servicio y controlador de UpdateUser
parent
63c24fab
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
39 additions
and
7 deletions
src/main/java/com/example/apprecetas/user/application/UpdateUserUseCase.java
src/main/java/com/example/apprecetas/user/application/impl/UpdateUserUseCaseImpl.java
src/main/java/com/example/apprecetas/user/domain/repository/UpdateUserRepository.java
src/main/java/com/example/apprecetas/user/infrastructure/controller/UpdateUserController.java
src/main/java/com/example/apprecetas/user/infrastructure/repository/impl/UpdateUserRepositoryImpl.java
src/main/java/com/example/apprecetas/user/application/UpdateUserUseCase.java
View file @
40c6ed73
...
@@ -6,6 +6,8 @@ public interface UpdateUserUseCase {
...
@@ -6,6 +6,8 @@ public interface UpdateUserUseCase {
User
updateById
(
String
id
,
User
inputUser
);
User
updateById
(
String
id
,
User
inputUser
);
boolean
changePassword
(
String
id
,
String
oldPassword
,
String
newPassword
);
void
deactivateById
(
String
id
);
void
deactivateById
(
String
id
);
void
activateById
(
String
id
);
void
activateById
(
String
id
);
...
...
src/main/java/com/example/apprecetas/user/application/impl/UpdateUserUseCaseImpl.java
View file @
40c6ed73
...
@@ -25,6 +25,11 @@ public class UpdateUserUseCaseImpl implements UpdateUserUseCase {
...
@@ -25,6 +25,11 @@ public class UpdateUserUseCaseImpl implements UpdateUserUseCase {
}
}
@Override
@Override
public
boolean
changePassword
(
String
id
,
String
oldPassword
,
String
newPassword
)
{
return
updateUserRepository
.
changePassword
(
id
,
oldPassword
,
newPassword
);
}
@Override
public
void
deactivateById
(
String
id
)
{
public
void
deactivateById
(
String
id
)
{
updateUserRepository
.
deactivateById
(
id
);
updateUserRepository
.
deactivateById
(
id
);
}
}
...
...
src/main/java/com/example/apprecetas/user/domain/repository/UpdateUserRepository.java
View file @
40c6ed73
...
@@ -6,6 +6,8 @@ public interface UpdateUserRepository {
...
@@ -6,6 +6,8 @@ public interface UpdateUserRepository {
UserDocument
updateById
(
String
id
,
UserDocument
userDocument
);
UserDocument
updateById
(
String
id
,
UserDocument
userDocument
);
boolean
changePassword
(
String
id
,
String
oldPassword
,
String
newPassword
);
void
deactivateById
(
String
id
);
void
deactivateById
(
String
id
);
void
activateById
(
String
id
);
void
activateById
(
String
id
);
...
...
src/main/java/com/example/apprecetas/user/infrastructure/controller/UpdateUserController.java
View file @
40c6ed73
...
@@ -2,12 +2,14 @@ package com.example.apprecetas.user.infrastructure.controller;
...
@@ -2,12 +2,14 @@ package com.example.apprecetas.user.infrastructure.controller;
import
com.example.apprecetas.exception.UnprocessableEntityException
;
import
com.example.apprecetas.exception.UnprocessableEntityException
;
import
com.example.apprecetas.user.application.UpdateUserUseCase
;
import
com.example.apprecetas.user.application.UpdateUserUseCase
;
import
com.example.apprecetas.user.infrastructure.controller.dto.UserInputDto
;
import
com.example.apprecetas.user.infrastructure.controller.dto.input.UserInputDto
;
import
com.example.apprecetas.user.infrastructure.controller.dto.UserOutputDto
;
import
com.example.apprecetas.user.infrastructure.controller.dto.input.UserUpdateInputDto
;
import
com.example.apprecetas.user.infrastructure.controller.dto.output.UserOutputDto
;
import
com.example.apprecetas.user.infrastructure.mapper.UserMapper
;
import
com.example.apprecetas.user.infrastructure.mapper.UserMapper
;
import
jakarta.validation.Valid
;
import
jakarta.validation.Valid
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
org.mapstruct.factory.Mappers
;
import
org.mapstruct.factory.Mappers
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.security.core.context.SecurityContextHolder
;
import
org.springframework.security.core.context.SecurityContextHolder
;
import
org.springframework.validation.BindingResult
;
import
org.springframework.validation.BindingResult
;
...
@@ -25,7 +27,7 @@ public class UpdateUserController {
...
@@ -25,7 +27,7 @@ public class UpdateUserController {
private
final
UserMapper
mapper
=
Mappers
.
getMapper
(
UserMapper
.
class
);
private
final
UserMapper
mapper
=
Mappers
.
getMapper
(
UserMapper
.
class
);
@PutMapping
@PutMapping
public
ResponseEntity
<
UserOutputDto
>
update
(
@Valid
@RequestBody
UserInputDto
userInputDto
,
BindingResult
result
)
{
public
ResponseEntity
<
UserOutputDto
>
update
(
@Valid
@RequestBody
User
Update
InputDto
userInputDto
,
BindingResult
result
)
{
if
(
result
.
hasErrors
())
{
if
(
result
.
hasErrors
())
{
String
errorMsg
=
result
.
getFieldErrors
().
stream
()
String
errorMsg
=
result
.
getFieldErrors
().
stream
()
.
map
(
fieldError
->
fieldError
.
getField
()
+
": "
+
fieldError
.
getDefaultMessage
())
.
map
(
fieldError
->
fieldError
.
getField
()
+
": "
+
fieldError
.
getDefaultMessage
())
...
@@ -36,6 +38,17 @@ public class UpdateUserController {
...
@@ -36,6 +38,17 @@ public class UpdateUserController {
return
ResponseEntity
.
ok
().
body
(
mapper
.
map
(
service
.
updateById
(
userId
,
mapper
.
map
(
userInputDto
))));
return
ResponseEntity
.
ok
().
body
(
mapper
.
map
(
service
.
updateById
(
userId
,
mapper
.
map
(
userInputDto
))));
}
}
@PatchMapping
(
"/password"
)
public
ResponseEntity
<
String
>
changePassword
(
@RequestParam
String
oldPassword
,
@RequestParam
String
newPassword
)
{
String
userId
=
SecurityContextHolder
.
getContext
().
getAuthentication
().
getName
();
boolean
response
=
service
.
changePassword
(
userId
,
oldPassword
,
newPassword
);
if
(
response
)
return
ResponseEntity
.
ok
().
body
(
"Contraseña modificada correctamente"
);
return
ResponseEntity
.
status
(
HttpStatus
.
CONFLICT
).
body
(
"Contraseña incorrecta"
);
}
@PatchMapping
(
"/deactivate"
)
@PatchMapping
(
"/deactivate"
)
public
ResponseEntity
<
String
>
deactivateMe
()
{
public
ResponseEntity
<
String
>
deactivateMe
()
{
String
userId
=
SecurityContextHolder
.
getContext
().
getAuthentication
().
getName
();
String
userId
=
SecurityContextHolder
.
getContext
().
getAuthentication
().
getName
();
...
...
src/main/java/com/example/apprecetas/user/infrastructure/repository/impl/UpdateUserRepositoryImpl.java
View file @
40c6ed73
...
@@ -25,15 +25,25 @@ public class UpdateUserRepositoryImpl implements UpdateUserRepository {
...
@@ -25,15 +25,25 @@ public class UpdateUserRepositoryImpl implements UpdateUserRepository {
user
.
setName
(
userDocument
.
getName
());
user
.
setName
(
userDocument
.
getName
());
user
.
setSurname
(
userDocument
.
getSurname
());
user
.
setSurname
(
userDocument
.
getSurname
());
user
.
setEmail
(
userDocument
.
getEmail
());
if
(
userDocument
.
getPassword
()
!=
null
)
user
.
setPassword
(
passwordEncoder
.
encode
(
userDocument
.
getPassword
()));
return
userRepository
.
save
(
user
);
return
userRepository
.
save
(
user
);
}
}
@Override
@Override
public
boolean
changePassword
(
String
id
,
String
oldPassword
,
String
newPassword
)
{
UserDocument
user
=
userRepository
.
findById
(
id
)
.
orElseThrow
(()
->
new
EntityNotFoundException
(
"Usuario con id "
+
id
+
" no encontrado"
));
// Si las contraseñas no coinciden
if
(!
passwordEncoder
.
matches
(
oldPassword
,
user
.
getPassword
()))
{
return
false
;
}
user
.
setPassword
(
passwordEncoder
.
encode
(
newPassword
));
userRepository
.
save
(
user
);
return
true
;
}
@Override
public
void
deactivateById
(
String
id
)
{
public
void
deactivateById
(
String
id
)
{
UserDocument
userDocument
=
userRepository
.
findById
(
id
)
UserDocument
userDocument
=
userRepository
.
findById
(
id
)
.
orElseThrow
(()
->
new
EntityNotFoundException
(
"Usuario con id "
+
id
+
" no encontrado"
));
.
orElseThrow
(()
->
new
EntityNotFoundException
(
"Usuario con id "
+
id
+
" no encontrado"
));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment