Skip to content

Commit d3c192b

Browse files
committed
pb attribut mail non defini ou faux
1 parent 4fda2c2 commit d3c192b

File tree

2 files changed

+93
-75
lines changed

2 files changed

+93
-75
lines changed

src/management/passwd/passwd.controller.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,18 @@ export class PasswdController {
9191
public async init(@Body() body: InitAccountDto, @Res() res: Response): Promise<Response> {
9292
const debug = {};
9393
const ok = await this.passwdService.initAccount(body);
94-
return res.status(HttpStatus.OK).json({
95-
message: 'Email envoyé verifiez votre boite mail alternative et vos spam',
96-
...debug,
97-
});
94+
if (ok){
95+
return res.status(HttpStatus.OK).json({
96+
message: 'Email envoyé verifiez votre boite mail alternative et vos spam',
97+
...debug,
98+
});
99+
}else{
100+
return res.status(HttpStatus.INTERNAL_SERVER_ERROR).json({
101+
message: 'Erreur serveur impossible d\'envoyer le mail',
102+
...debug,
103+
});
104+
}
105+
98106
}
99107
@Post('initmany')
100108
@ApiOperation({ summary: "Initialise plusieurs identités. envoi un jeton par mail à l'identité" })

src/management/passwd/passwd.service.ts

Lines changed: 81 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -76,54 +76,58 @@ export class PasswdService extends AbstractService {
7676
const padd = await this.getPaddingForCode();
7777
const mailAttribute = params.emailAttribute;
7878
const mail = <string>get(identity.toObject(), mailAttribute);
79-
const token = await this.askToken({ mail: mail, uid: initDto.uid }, padd + k.toString(16), params.resetCodeTTL);
80-
this.logger.log('Token :' + token + ' int : ' + k.toString(10));
81-
if (initDto.type === 0) {
82-
this.logger.log('Reset password asked by mail for : ' + initDto.uid);
83-
const smtpParams = await this.mailadmService.getParams();
84-
if (mailAttribute !== '') {
85-
const displayName = identity.inetOrgPerson.displayName;
86-
this.mailer
87-
.sendMail({
88-
from: smtpParams.sender,
89-
to: mail,
90-
subject: 'Reinitialisation de votre mot de passe',
91-
template: 'resetaccount',
92-
context: {
93-
uid: identity.inetOrgPerson.uid,
94-
displayName: displayName,
95-
code: k,
96-
},
97-
})
98-
.then(() => {
99-
this.logger.log('reset compte envoyé pour uid' + initDto.uid + ' à ' + mail);
100-
})
101-
.catch(() => {
102-
throw new BadRequestException({
103-
message: 'Erreur serveur lors de l envoi du mail',
104-
error: 'Bad Request',
105-
statusCode: 400,
79+
if (mail){
80+
const token = await this.askToken({ mail: mail, uid: initDto.uid }, padd + k.toString(16), params.resetCodeTTL);
81+
this.logger.log('Token :' + token + ' int : ' + k.toString(10));
82+
if (initDto.type === 0) {
83+
this.logger.log('Reset password asked by mail for : ' + initDto.uid);
84+
const smtpParams = await this.mailadmService.getParams();
85+
if (mailAttribute !== '') {
86+
this.mailer
87+
.sendMail({
88+
from: smtpParams.sender,
89+
to: mail,
90+
subject: 'Reinitialisation de votre mot de passe',
91+
template: 'resetaccount',
92+
context: {
93+
uid: identity.inetOrgPerson.uid,
94+
displayName: identity.inetOrgPerson.displayName,
95+
code: k,
96+
},
97+
})
98+
.then(() => {
99+
this.logger.log('reset compte envoyé pour uid' + initDto.uid + ' à ' + mail);
100+
})
101+
.catch(() => {
102+
throw new BadRequestException({
103+
message: 'Erreur serveur lors de l envoi du mail',
104+
error: 'Bad Request',
105+
statusCode: 400,
106+
});
106107
});
107-
});
108-
return token;
109-
} else {
110-
return false;
111-
}
112-
} else {
113-
//envoi par SMS si c est possible
114-
const policies = new PasswordPoliciesDto();
115-
if (policies.resetBySms === true) {
116-
this.logger.log('Reset password asked by SMS for : ' + initDto.uid);
117-
const smsAttribute = params.mobileAttribute;
118-
if (smsAttribute !== '') {
119-
const numTel = <string>get(identity.toObject(), smsAttribute);
120-
await this.smsadmService.send(numTel, 'Votre code de reinitialisation : ' + k.toString(10));
108+
return token;
109+
} else {
110+
return false;
121111
}
122-
return token;
123112
} else {
124-
return false;
113+
//envoi par SMS si c est possible
114+
const policies = new PasswordPoliciesDto();
115+
if (policies.resetBySms === true) {
116+
this.logger.log('Reset password asked by SMS for : ' + initDto.uid);
117+
const smsAttribute = params.mobileAttribute;
118+
if (smsAttribute !== '') {
119+
const numTel = <string>get(identity.toObject(), smsAttribute);
120+
await this.smsadmService.send(numTel, 'Votre code de reinitialisation : ' + k.toString(10));
121+
}
122+
return token;
123+
} else {
124+
return false;
125+
}
125126
}
127+
}else{
128+
this.logger.error('Error while reset identityMailAttribute Empty');
126129
}
130+
127131
} catch (e) {
128132
this.logger.error('Error while reseting password. ' + e + ` (uid=${initDto?.uid})`);
129133
//on retoune un token qui ne sert à rien pour ne pas divulguer que l uid n existe pas
@@ -143,36 +147,42 @@ export class PasswdService extends AbstractService {
143147
this.logger.log('mailer.identityMailAttribute : ' + mailAttribute);
144148
if (mailAttribute !== '') {
145149
const mail = <string>get(identity.toObject(), mailAttribute);
146-
const smtpParams = await this.mailadmService.getParams();
147-
//demande du token
148-
const k = crypto.randomBytes(PasswdService.RANDOM_BYTES_K).toString('hex');
149-
const token = await this.askToken({ mail: mail, uid: initDto.uid }, k, params.initTokenTTL);
150-
//envoi du token
151-
this.mailer
152-
.sendMail({
153-
from: smtpParams.sender,
154-
to: mail,
155-
subject: 'Activation de votre compte',
156-
template: 'initaccount',
157-
context: {
158-
uid: initDto.uid,
159-
url: this.config.get('frontPwd.url') + '/initaccount/' + token,
160-
},
161-
})
162-
.then(() => {
163-
this.logger.log('Init compte envoyé pour uid' + initDto.uid + ' à ' + mail);
164-
this.setInitState(identity, InitStatesEnum.SENT);
165-
})
166-
.catch((e) => {
167-
this.logger.error('Erreur serveur lors de l envoi du mail' + e);
168-
throw new BadRequestException({
169-
message: 'Erreur serveur lors de l envoi du mail' + e,
170-
error: 'Bad Request',
171-
statusCode: 400,
150+
if (mail){
151+
const smtpParams = await this.mailadmService.getParams();
152+
//demande du token
153+
const k = crypto.randomBytes(PasswdService.RANDOM_BYTES_K).toString('hex');
154+
const token = await this.askToken({ mail: mail, uid: initDto.uid }, k, params.initTokenTTL);
155+
//envoi du token
156+
this.mailer
157+
.sendMail({
158+
from: smtpParams.sender,
159+
to: mail,
160+
subject: 'Activation de votre compte',
161+
template: 'initaccount',
162+
context: {
163+
displayName: identity.inetOrgPerson.displayName,
164+
uid: initDto.uid,
165+
url: this.config.get('frontPwd.url') + '/initaccount/' + token,
166+
},
167+
})
168+
.then(() => {
169+
this.logger.log('Init compte envoyé pour uid' + initDto.uid + ' à ' + mail);
170+
this.setInitState(identity, InitStatesEnum.SENT);
171+
})
172+
.catch((e) => {
173+
this.logger.error('Erreur serveur lors de l envoi du mail' + e);
174+
throw new BadRequestException({
175+
message: 'Erreur serveur lors de l envoi du mail' + e,
176+
error: 'Bad Request',
177+
statusCode: 400,
178+
});
172179
});
173-
});
174180

175-
return true;
181+
return true;
182+
}else{
183+
this.logger.error('Error while initAccount identityMailAttribute Empty');
184+
return false
185+
}
176186
} else {
177187
this.logger.error('Error while initAccount identityMailAttribute not defined');
178188
return false;

0 commit comments

Comments
 (0)