Add error when email system is not configured and using the forgot
authorChocobozzz <me@florianbigard.com>
Wed, 5 Dec 2018 14:10:45 +0000 (15:10 +0100)
committerChocobozzz <me@florianbigard.com>
Wed, 5 Dec 2018 14:10:45 +0000 (15:10 +0100)
password system

client/src/app/core/server/server.service.ts
client/src/app/login/login.component.html
client/src/app/login/login.component.ts
server/controllers/api/config.ts
server/lib/emailer.ts
shared/models/server/server-config.model.ts

index da8bd26db2be69931ab2c25fa92a280b8fbd62fb..6eccb833698812c9f77b2b32714cdbb45dc21bc0 100644 (file)
@@ -37,6 +37,9 @@ export class ServerService {
         css: ''
       }
     },
+    email: {
+      enabled: false
+    },
     serverVersion: 'Unknown',
     signup: {
       allowed: false,
index 93dbed525e22ac7cd3b0f340dfbb0afc852ac235..9b8146624ca0ac0e8e112357bde1bd3c5b07a9d5 100644 (file)
   </div>
 
   <div class="modal-body">
-    <div class="form-group">
+
+    <div *ngIf="isEmailDisabled()" class="alert alert-danger" i18n>
+      We are sorry, you cannot recover you password because your instance administrator did not configure the PeerTube email system.
+    </div>
+
+    <div class="form-group" [hidden]="isEmailDisabled()">
       <label i18n for="forgot-password-email">Email</label>
       <input
         type="email" id="forgot-password-email" i18n-placeholder placeholder="Email address" required
index 7553e64564220907cf323ed7c88f1279893d28c5..212a8ff1f60698c1f62c6022cea955c77083f62b 100644 (file)
@@ -19,7 +19,6 @@ import { Router } from '@angular/router'
 export class LoginComponent extends FormReactive implements OnInit {
   @ViewChild('emailInput') input: ElementRef
   @ViewChild('forgotPasswordModal') forgotPasswordModal: ElementRef
-  @ViewChild('forgotPasswordEmailInput') forgotPasswordEmailInput: ElementRef
 
   error: string = null
   forgotPasswordEmail = ''
@@ -45,6 +44,10 @@ export class LoginComponent extends FormReactive implements OnInit {
     return this.serverService.getConfig().signup.allowed === true
   }
 
+  isEmailDisabled () {
+    return this.serverService.getConfig().email.enabled === false
+  }
+
   ngOnInit () {
     this.buildForm({
       username: this.loginValidatorsService.LOGIN_USERNAME,
@@ -96,10 +99,6 @@ export class LoginComponent extends FormReactive implements OnInit {
       )
   }
 
-  onForgotPasswordModalShown () {
-    this.forgotPasswordEmailInput.nativeElement.focus()
-  }
-
   openForgotPasswordModal () {
     this.openedForgotPasswordModal = this.modalService.open(this.forgotPasswordModal)
   }
index 5233e9f68ee5015e7cf488f5732f9289514333b3..d65e321e984e02d8cd30742ddd4bc7d8a26e2449 100644 (file)
@@ -11,6 +11,7 @@ import { ClientHtml } from '../../lib/client-html'
 import { auditLoggerFactory, CustomConfigAuditView, getAuditIdFromRes } from '../../helpers/audit-logger'
 import { remove, writeJSON } from 'fs-extra'
 import { getServerCommit } from '../../helpers/utils'
+import { Emailer } from '../../lib/emailer'
 
 const packageJSON = require('../../../../package.json')
 const configRouter = express.Router()
@@ -61,6 +62,9 @@ async function getConfig (req: express.Request, res: express.Response) {
         css: CONFIG.INSTANCE.CUSTOMIZATIONS.CSS
       }
     },
+    email: {
+      enabled: Emailer.Instance.isEnabled()
+    },
     serverVersion: packageJSON.version,
     serverCommit,
     signup: {
index 9327792fb6f8a731e10e252f2325218eff24dfdd..074d4ad44b8c50aebcba69cb3ff45062bc7f430f 100644 (file)
@@ -14,6 +14,7 @@ class Emailer {
   private static instance: Emailer
   private initialized = false
   private transporter: Transporter
+  private enabled = false
 
   private constructor () {}
 
@@ -50,6 +51,8 @@ class Emailer {
         tls,
         auth
       })
+
+      this.enabled = true
     } else {
       if (!isTestInstance()) {
         logger.error('Cannot use SMTP server because of lack of configuration. PeerTube will not be able to send mails!')
@@ -57,6 +60,10 @@ class Emailer {
     }
   }
 
+  isEnabled () {
+    return this.enabled
+  }
+
   async checkConnectionOrDie () {
     if (!this.transporter) return
 
index 91196c1eb818adcba88a4ef959e65443bf7d94c1..a6d28e05ef8c575055e55cbc91e6c644977aff11 100644 (file)
@@ -15,6 +15,10 @@ export interface ServerConfig {
     }
   }
 
+  email: {
+    enabled: boolean
+  }
+
   signup: {
     allowed: boolean,
     allowedForCurrentIP: boolean,