Merge pull request #1992 from dpalou/MOBILE-2941

MOBILE-2941 login: Display forgot password button in reconnect
main
Juan Leyva 2019-07-18 12:24:18 +02:00 committed by GitHub
commit 7e3b4af288
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 46 additions and 22 deletions

View File

@ -19,7 +19,6 @@ import { CoreAppProvider } from '@providers/app';
import { CoreEventsProvider } from '@providers/events';
import { CoreSitesProvider } from '@providers/sites';
import { CoreDomUtilsProvider } from '@providers/utils/dom';
import { CoreUtilsProvider } from '@providers/utils/utils';
import { CoreLoginHelperProvider } from '../../providers/helper';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { CoreConfigConstants } from '../../../../configconstants';
@ -53,7 +52,7 @@ export class CoreLoginCredentialsPage {
constructor(private navCtrl: NavController, navParams: NavParams, fb: FormBuilder, private appProvider: CoreAppProvider,
private sitesProvider: CoreSitesProvider, private loginHelper: CoreLoginHelperProvider,
private domUtils: CoreDomUtilsProvider, private translate: TranslateService, private utils: CoreUtilsProvider,
private domUtils: CoreDomUtilsProvider, private translate: TranslateService,
private eventsProvider: CoreEventsProvider) {
this.siteUrl = navParams.get('siteUrl');
@ -230,26 +229,7 @@ export class CoreLoginCredentialsPage {
* Forgotten password button clicked.
*/
forgottenPassword(): void {
if (this.siteConfig && this.siteConfig.forgottenpasswordurl) {
// URL set, open it.
this.utils.openInApp(this.siteConfig.forgottenpasswordurl);
return;
}
// Check if password reset can be done through the app.
const modal = this.domUtils.showModalLoading();
this.loginHelper.canRequestPasswordReset(this.siteUrl).then((canReset) => {
if (canReset) {
this.navCtrl.push('CoreLoginForgottenPasswordPage', {
siteUrl: this.siteUrl, username: this.credForm.value.username
});
} else {
this.loginHelper.openForgottenPassword(this.siteUrl);
}
}).finally(() => {
modal.dismiss();
});
this.loginHelper.forgottenPasswordClicked(this.navCtrl, this.siteUrl, this.credForm.value.username, this.siteConfig);
}
/**

View File

@ -49,6 +49,11 @@
</form>
</ion-list>
<!-- Forgotten password button. -->
<div padding-top>
<button ion-button block text-wrap color="light" (click)="forgottenPassword()">{{ 'core.login.forgotten' | translate }}</button>
</div>
<!-- Identity providers. -->
<ion-list *ngIf="identityProviders && identityProviders.length" padding-top>
<ion-list-header text-wrap>{{ 'core.login.potentialidps' | translate }}</ion-list-header>

View File

@ -161,6 +161,13 @@ export class CoreLoginReconnectPage {
});
}
/**
* Forgotten password button clicked.
*/
forgottenPassword(): void {
this.loginHelper.forgottenPasswordClicked(this.navCtrl, this.siteUrl, this.credForm.value.username, this.siteConfig);
}
/**
* An OAuth button was clicked.
*

View File

@ -260,6 +260,38 @@ export class CoreLoginHelperProvider {
});
}
/**
* Helper function to act when the forgotten password is clicked.
*
* @param {NavController} navCtrl NavController to use to navigate.
* @param {string} siteUrl Site URL.
* @param {string} username Username.
* @param {any} [siteConfig] Site config.
*/
forgottenPasswordClicked(navCtrl: NavController, siteUrl: string, username: string, siteConfig?: any): void {
if (siteConfig && siteConfig.forgottenpasswordurl) {
// URL set, open it.
this.utils.openInApp(siteConfig.forgottenpasswordurl);
return;
}
// Check if password reset can be done through the app.
const modal = this.domUtils.showModalLoading();
this.canRequestPasswordReset(siteUrl).then((canReset) => {
if (canReset) {
navCtrl.push('CoreLoginForgottenPasswordPage', {
siteUrl: siteUrl, username: username
});
} else {
this.openForgottenPassword(siteUrl);
}
}).finally(() => {
modal.dismiss();
});
}
/**
* Format profile fields, filtering the ones that shouldn't be shown on signup and classifying them in categories.
*