Me han funcionado dos opciones.
Pasos:
- Declaramos una variable con la que validar, a través de Regex, el email, el número de teléfono, etc..
- Utilizamos el condicional if para realizar la búsqueda del usuario según el dato uid introducido.
Ejemplo:
let regexEmail = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
if (regexEmail.test(formData.uid)) {
user = await User.findByOrFail('email', formData.uid)
} else {
user = await User.findByOrFail('username', formData.uid)
}
Pasos:
- Hacemos uso de Lucid y las consultas where() y orWhere(). Obtenemos una colección.
"user": [
{
"id": 9,
"username": "roger",
"email": "roger@example.com",
"phone": null,
"birthdate": "1987-02-25 00:00:00",
"name": null,
"is_verified": 1,
"created_at": "2019-05-16 10:43:34",
"updated_at": "2019-05-16 11:03:06"
}
],
- Obtener el primer objeto .first() de la colección para poder utilizarlo con auth.
"user": {
"id": 9,
"username": "roger",
"email": "roger@example.com",
"phone": null,
"birthdate": "1987-02-25 00:00:00",
"name": null,
"is_verified": 1,
"created_at": "2019-05-16 10:43:34",
"updated_at": "2019-05-16 11:03:06"
},
Ejemplo:
user = await User.query().where('email', formData.uid).orWhere('username', formData.uid).fetch()
user = user.first()
Con una sola línea conseguimos lo mismo que con el condicional.
ADONIS.JS. Authentication. < https://adonisjs.com/docs/4.1/authentication >
[Última consulta: 18 de mayo de 2019]
MDN. RegExp.prototype.test(). < https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/RegExp/test >
[Última consulta: 18 de mayo de 2019]
TYLERMCGINNIS. How to validate an email address in JavaScript. < https://tylermcginnis.com/validate-email-address-javascript/ >
[Última consulta: 18 de mayo de 2019]
ADONIS.JS. LUCID ORM, Getting Started; Query Builder. < https://adonisjs.com/docs/4.1/lucid#_query_builder >
[Última consulta: 19 de mayo de 2019]
ADONIS.JS (forum). orWhere in search query. < https://forum.adonisjs.com/t/orwhere-in-search-query/83 >
[Última consulta: 19 de mayo de 2019]
ADONIS.JS. Serialization. < https://adonisjs.com/docs/4.1/serializers >
[Última consulta: 19 de mayo de 2019]
ADONIS.JS (forum). How can I serialize a single object?. < https://forum.adonisjs.com/t/how-can-i-serialize-a-single-object/1203/6 >
[Última consulta: 19 de mayo de 2019]
ADONIS.JS (GitHub). Model instance should have toJSON method. < adonisjs/lucid#21 >
[Última consulta: 19 de mayo de 2019]