Skip to content

Commit 17f3ae5

Browse files
fix #107
1 parent d3a4009 commit 17f3ae5

File tree

8 files changed

+158
-118
lines changed

8 files changed

+158
-118
lines changed

webBudget/src/main/java/br/com/webbudget/application/controller/tools/UserBean.java

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package br.com.webbudget.application.controller.tools;
1818

1919
import br.com.webbudget.application.controller.AbstractBean;
20-
import br.com.webbudget.application.producer.qualifier.AuthenticatedUser;
2120
import br.com.webbudget.domain.misc.ex.WbDomainException;
2221
import br.com.webbudget.domain.security.Group;
2322
import br.com.webbudget.domain.service.AccountService;
@@ -27,12 +26,13 @@
2726
import javax.inject.Inject;
2827
import javax.inject.Named;
2928
import lombok.Getter;
29+
import org.picketlink.Identity;
3030

3131
/**
3232
*
3333
* @author Arthur Gregorio
3434
*
35-
* @version 1.1.0
35+
* @version 1.2.0
3636
* @since 1.0.0, 02/03/2014
3737
*/
3838
@Named
@@ -42,16 +42,14 @@ public class UserBean extends AbstractBean {
4242
@Getter
4343
private User user;
4444

45-
@Getter
46-
@Inject
47-
@AuthenticatedUser
48-
private User authenticatedUser;
49-
5045
@Getter
5146
private List<User> users;
5247
@Getter
5348
private List<Group> groups;
5449

50+
@Inject
51+
private transient Identity identity;
52+
5553
@Inject
5654
private transient AccountService accountService;
5755

@@ -63,6 +61,15 @@ public void initializeListing() {
6361
this.users = this.accountService.listUsers(null);
6462
}
6563

64+
/**
65+
* Inicializa a parte do profile do usuario
66+
*/
67+
public void initializeProfile() {
68+
69+
// setamos no usuario o usuario autenticado
70+
this.user = (User) this.identity.getAccount();
71+
}
72+
6673
/**
6774
* @param userId
6875
*/
@@ -162,8 +169,19 @@ public void doDelete() {
162169
/**
163170
*
164171
*/
165-
public void doPasswordUpdate() {
172+
public void doProfileUpdate() {
173+
174+
try {
175+
this.accountService.updateProfile(this.user);
166176

177+
this.info("user.action.profile-updated", true);
178+
} catch (WbDomainException ex) {
179+
this.logger.error("UserBean#doProfileUpdate has found erros", ex);
180+
this.fixedError(ex.getMessage(), true);
181+
} catch (Exception ex) {
182+
this.logger.error("UserBean#doProfileUpdate has found erros", ex);
183+
this.fixedError("generic.operation-error", true, ex.getMessage());
184+
}
167185
}
168186

169187
/**

webBudget/src/main/java/br/com/webbudget/domain/service/AccountService.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,25 @@ public void update(User user) {
151151
this.relationshipManager.add(groupMembership);
152152
}
153153

154+
/**
155+
*
156+
* @param user
157+
*/
158+
@Transactional
159+
public void updateProfile(User user) {
160+
161+
// pegamos a senha antes de salvar o usuario
162+
final String unsecurePassword = user.getPassword();
163+
164+
// atualizamos o usuario com a senha
165+
if (unsecurePassword != null && !unsecurePassword.isEmpty()) {
166+
this.identityManager.updateCredential(user, new Password(unsecurePassword));
167+
} else {
168+
// salvamos
169+
this.identityManager.update(user);
170+
}
171+
}
172+
154173
/**
155174
*
156175
* @param group

webBudget/src/main/resources/i18n/menu_en_US.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ miscellany.financial-periods=Financial Periods
2929
tools.users=Users
3030
tools.private-messages=Private Messages
3131
dashboard.logout=Logout
32-
dashboard.account=My Account
3332
yes=Yes
3433
no=No
3534
actions=Actions
@@ -56,3 +55,4 @@ load=Load
5655
loading=Loading...
5756
entries.contacts=Contacts
5857
tools.groups=Groups
58+
dashboard.profile=Profile

webBudget/src/main/resources/i18n/menu_pt_BR.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ miscellany.financial-periods=Per\u00edodos Financeiros
2929
tools.users=Usu\u00e1rios
3030
tools.private-messages=Mensagens Privadas
3131
dashboard.logout=Sair
32-
dashboard.account=Minha Conta
3332
yes=Sim
3433
no=N\u00e3o
3534
actions=A\u00e7\u00f5es
@@ -56,3 +55,4 @@ load=Carregar
5655
loading=Carregando...
5756
entries.contacts=Contatos
5857
tools.groups=Grupos
58+
dashboard.profile=Perfil

webBudget/src/main/resources/i18n/messages_en_US.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -529,3 +529,4 @@ group.action.deleted=Group successfully deleted!
529529
group.form.select-one=Select One
530530
group.error.duplicated-group=There is already a group with this name registered
531531
group.error.empty-authorizations=The group must contain permissions
532+
user.action.profile-updated=User profile updated successfully!

webBudget/src/main/resources/i18n/messages_pt_BR.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -529,3 +529,4 @@ group.action.deleted=Grupo deletado com sucesso!
529529
group.form.select-one=Selecione
530530
group.error.duplicated-group=J\u00e1 existe um grupo cadastrado com esse nome
531531
group.error.empty-authorizations=O grupo deve conter permiss\u00f5es
532+
user.action.profile-updated=Perfil do usu\u00e1rio atualizado com sucesso!
Lines changed: 107 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -1,107 +1,108 @@
1-
<!--
2-
Copyright (C) 2015 Arthur Gregorio, AG.Software
3-
4-
This program is free software: you can redistribute it and/or modify
5-
it under the terms of the GNU General Public License as published by
6-
the Free Software Foundation, either version 3 of the License, or
7-
(at your option) any later version.
8-
9-
This program is distributed in the hope that it will be useful,
10-
but WITHOUT ANY WARRANTY; without even the implied warranty of
11-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12-
GNU General Public License for more details.
13-
14-
You should have received a copy of the GNU General Public License
15-
along with this program. If not, see <http://www.gnu.org/licenses/>.
16-
-->
17-
18-
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
19-
xmlns:p="http://primefaces.org/ui"
20-
xmlns:h="http://xmlns.jcp.org/jsf/html"
21-
xmlns:f="http://xmlns.jcp.org/jsf/core"
22-
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
23-
template="/template/mainTemplate.xhtml">
24-
25-
<f:metadata>
26-
<f:viewAction action="#{userBean.initializePreferences()}"/>
27-
</f:metadata>
28-
29-
<ui:define name="breadcrumb">
30-
<p:menuitem url="#"
31-
value="#{breadcrumb['preferences']}" />
32-
</ui:define>
33-
34-
<ui:define name="content">
35-
36-
<h:form id="userAccountForm" prependId="false">
37-
<div class="ui-grid-row">
38-
<div class="ui-grid-col-12">
39-
<p:messages id="messages" closable="true" />
40-
</div>
41-
</div>
42-
<div class="ui-grid-row flat-box">
43-
<div class="ui-grid-col-6">
44-
<div class="ui-grid-row">
45-
<div class="ui-grid-col-12 form-group form-group-l">
46-
<p:outputLabel for="inName"
47-
value="#{messages['user-account.form.name']}: "/>
48-
<p:inputText id="inName"
49-
size="50"
50-
value="#{userBean.user.name}" />
51-
</div>
52-
</div>
53-
<div class="ui-grid-row">
54-
<div class="ui-grid-col-12 form-group form-group-l">
55-
<p:outputLabel for="inEmail"
56-
value="#{messages['user-account.form.email']}: "/>
57-
<p:inputText id="inEmail"
58-
size="50"
59-
value="#{userBean.user.email}"/>
60-
</div>
61-
</div>
62-
<div class="ui-grid-row div-pd-tb-10">
63-
<div class="ui-grid-col-12 form-header">
64-
<h:outputText value="#{messages['user-account.form.change-password']}:"/>
65-
</div>
66-
</div>
67-
<div class="ui-grid-row">
68-
<div class="ui-grid-col-12 form-group form-group-l">
69-
<p:outputLabel for="inNewPassword"
70-
value="#{messages['user-account.form.new-password']}: "/>
71-
<p:password id="inNewPassword"
72-
match="inConfirmPassword"
73-
value="#{userBean.user.unsecurePassword}"/>
74-
</div>
75-
</div>
76-
<div class="ui-grid-row">
77-
<div class="ui-grid-col-12 form-group form-group-l">
78-
<p:outputLabel for="inConfirmPassword"
79-
value="#{messages['user-account.form.confirm-password']}: "/>
80-
<p:password id="inConfirmPassword"
81-
value="#{userBean.user.unsecurePasswordConfirmation}"/>
82-
</div>
83-
</div>
84-
</div>
85-
<div class="ui-grid-col-6">
86-
87-
</div>
88-
</div>
89-
<div class="ui-grid-row flat-box">
90-
<div class="ui-grid-col-6">
91-
92-
</div>
93-
<div class="ui-grid-col-6 form-controls-box">
94-
<p:commandButton immediate="true"
95-
value="#{menu['back']}"
96-
action="#{userBean.toDashboard()}"/>
97-
<p:spacer width="10"/>
98-
<p:commandButton value="#{menu['save']}"
99-
update="userAccountForm"
100-
process="userAccountForm"
101-
styleClass="ui-button-success"
102-
action="#{userBean.doPasswordUpdate()}"/>
103-
</div>
104-
</div>
105-
</h:form>
106-
</ui:define>
1+
<!--
2+
Copyright (C) 2015 Arthur Gregorio, AG.Software
3+
4+
This program is free software: you can redistribute it and/or modify
5+
it under the terms of the GNU General Public License as published by
6+
the Free Software Foundation, either version 3 of the License, or
7+
(at your option) any later version.
8+
9+
This program is distributed in the hope that it will be useful,
10+
but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
GNU General Public License for more details.
13+
14+
You should have received a copy of the GNU General Public License
15+
along with this program. If not, see <http://www.gnu.org/licenses/>.
16+
-->
17+
18+
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
19+
xmlns:p="http://primefaces.org/ui"
20+
xmlns:h="http://xmlns.jcp.org/jsf/html"
21+
xmlns:f="http://xmlns.jcp.org/jsf/core"
22+
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
23+
template="/template/mainTemplate.xhtml">
24+
25+
<f:metadata>
26+
<f:viewAction action="#{userBean.initializeProfile()}"/>
27+
</f:metadata>
28+
29+
<ui:define name="breadcrumb">
30+
<p:menuitem url="#"
31+
value="#{breadcrumb['preferences']}" />
32+
</ui:define>
33+
34+
<ui:define name="content">
35+
36+
<h:form id="profileForm" prependId="false">
37+
<div class="ui-grid-row">
38+
<div class="ui-grid-col-12">
39+
<p:messages id="messages" closable="true" />
40+
</div>
41+
</div>
42+
<div class="ui-grid-row flat-box">
43+
<div class="ui-grid-col-6">
44+
<div class="ui-grid-row">
45+
<div class="ui-grid-col-12 form-group form-group-l">
46+
<p:outputLabel for="inName"
47+
value="#{messages['user.form.name']}: "/>
48+
<p:inputText id="inName"
49+
size="50"
50+
value="#{userBean.user.name}" />
51+
</div>
52+
</div>
53+
<div class="ui-grid-row">
54+
<div class="ui-grid-col-12 form-group form-group-l">
55+
<p:outputLabel for="inEmail"
56+
value="#{messages['user.form.email']}: "/>
57+
<p:inputText id="inEmail"
58+
size="50"
59+
value="#{userBean.user.email}"/>
60+
</div>
61+
</div>
62+
<div class="ui-grid-row div-pd-tb-10">
63+
<div class="ui-grid-col-12 form-header">
64+
<h:outputText value="#{messages['user.form.change-password']}:"/>
65+
</div>
66+
</div>
67+
<div class="ui-grid-row">
68+
<div class="ui-grid-col-12 form-group form-group-l">
69+
<p:outputLabel for="inPassword"
70+
value="#{messages['user.form.password']}"/>
71+
<p:password id="inPassword"
72+
match="inConfirmPassword"
73+
value="#{userBean.user.password}"
74+
validatorMessage="#{validation['user.password-not-match']}"/>
75+
</div>
76+
</div>
77+
<div class="ui-grid-row">
78+
<div class="ui-grid-col-12 form-group form-group-l">
79+
<p:outputLabel for="inConfirmPassword"
80+
value="#{messages['user.form.confirm-password']}"/>
81+
<p:password id="inConfirmPassword"
82+
value="#{userBean.user.passwordConfirmation}"/>
83+
</div>
84+
</div>
85+
</div>
86+
<div class="ui-grid-col-6">
87+
88+
</div>
89+
</div>
90+
<div class="ui-grid-row flat-box">
91+
<div class="ui-grid-col-6">
92+
93+
</div>
94+
<div class="ui-grid-col-6 form-controls-box">
95+
<p:commandButton immediate="true"
96+
value="#{menu['back']}"
97+
action="#{userBean.toDashboard()}"/>
98+
<p:spacer width="10"/>
99+
<p:commandButton update="profileForm"
100+
process="profileForm"
101+
value="#{menu['save']}"
102+
styleClass="ui-button-success"
103+
action="#{userBean.doProfileUpdate()}"/>
104+
</div>
105+
</div>
106+
</h:form>
107+
</ui:define>
107108
</ui:composition>

webBudget/src/main/webapp/template/mainTemplate.xhtml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@
117117
value="#{authorizationBean.authenticatedUserName}">
118118
<p:menuitem value="#{menu['dashboard.logout']}"
119119
action="#{authenticationBean.doLogout()}"/>
120-
<p:menuitem value="#{menu['dashboard.account']}"
121-
action="/main/tools/user/accountPreferences.xhtml?faces-redirect=true"/>
120+
<p:menuitem value="#{menu['dashboard.profile']}"
121+
action="/main/tools/user/formUserProfile.xhtml?faces-redirect=true"/>
122122
</p:menuButton>
123123
</f:facet>
124124
</p:menubar>

0 commit comments

Comments
 (0)