Add ability to login with email
This commit is contained in:
parent
61c04fa9b3
commit
ba12e8b3a6
|
@ -7,9 +7,9 @@
|
||||||
|
|
||||||
<form role="form" (ngSubmit)="login()" [formGroup]="form">
|
<form role="form" (ngSubmit)="login()" [formGroup]="form">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="username">Username</label>
|
<label for="username">Username or email address</label>
|
||||||
<input
|
<input
|
||||||
type="text" id="username" placeholder="Username" required
|
type="text" id="username" placeholder="Username or email address" required
|
||||||
formControlName="username" [ngClass]="{ 'input-error': formErrors['username'] }"
|
formControlName="username" [ngClass]="{ 'input-error': formErrors['username'] }"
|
||||||
>
|
>
|
||||||
<div *ngIf="formErrors.username" class="form-error">
|
<div *ngIf="formErrors.username" class="form-error">
|
||||||
|
|
|
@ -25,10 +25,10 @@ function getRefreshToken (refreshToken: string) {
|
||||||
return OAuthTokenModel.getByRefreshTokenAndPopulateClient(refreshToken)
|
return OAuthTokenModel.getByRefreshTokenAndPopulateClient(refreshToken)
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getUser (username: string, password: string) {
|
async function getUser (usernameOrEmail: string, password: string) {
|
||||||
logger.debug('Getting User (username: ' + username + ', password: ******).')
|
logger.debug('Getting User (username/email: ' + usernameOrEmail + ', password: ******).')
|
||||||
|
|
||||||
const user = await UserModel.getByUsername(username)
|
const user = await UserModel.loadByUsernameOrEmail(usernameOrEmail)
|
||||||
if (!user) return null
|
if (!user) return null
|
||||||
|
|
||||||
const passwordMatch = await user.isPasswordMatch(password)
|
const passwordMatch = await user.isPasswordMatch(password)
|
||||||
|
|
|
@ -121,17 +121,6 @@ export class UserModel extends Model<UserModel> {
|
||||||
return this.count()
|
return this.count()
|
||||||
}
|
}
|
||||||
|
|
||||||
static getByUsername (username: string) {
|
|
||||||
const query = {
|
|
||||||
where: {
|
|
||||||
username: username
|
|
||||||
},
|
|
||||||
include: [ { model: AccountModel, required: true } ]
|
|
||||||
}
|
|
||||||
|
|
||||||
return UserModel.findOne(query)
|
|
||||||
}
|
|
||||||
|
|
||||||
static listForApi (start: number, count: number, sort: string) {
|
static listForApi (start: number, count: number, sort: string) {
|
||||||
const query = {
|
const query = {
|
||||||
offset: start,
|
offset: start,
|
||||||
|
@ -172,7 +161,9 @@ export class UserModel extends Model<UserModel> {
|
||||||
return UserModel.scope('withVideoChannel').findOne(query)
|
return UserModel.scope('withVideoChannel').findOne(query)
|
||||||
}
|
}
|
||||||
|
|
||||||
static loadByUsernameOrEmail (username: string, email: string) {
|
static loadByUsernameOrEmail (username: string, email?: string) {
|
||||||
|
if (!email) email = username
|
||||||
|
|
||||||
const query = {
|
const query = {
|
||||||
where: {
|
where: {
|
||||||
[ Sequelize.Op.or ]: [ { username }, { email } ]
|
[ Sequelize.Op.or ]: [ { username }, { email } ]
|
||||||
|
|
|
@ -523,7 +523,7 @@ describe('Test users API validators', function () {
|
||||||
})
|
})
|
||||||
|
|
||||||
it('Should fail with a registered user having too many video', async function () {
|
it('Should fail with a registered user having too many video', async function () {
|
||||||
this.timeout(10000)
|
this.timeout(15000)
|
||||||
|
|
||||||
const user = {
|
const user = {
|
||||||
username: 'user3',
|
username: 'user3',
|
||||||
|
|
Loading…
Reference in New Issue