fix: client login
This commit is contained in:
parent
197b6b4160
commit
4b0428212d
@ -86,10 +86,12 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
this.refreshStrategies()
|
|
||||||
this.$refs.iptEmail.focus()
|
this.$refs.iptEmail.focus()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
/**
|
||||||
|
* SELECT STRATEGY
|
||||||
|
*/
|
||||||
selectStrategy (key, useForm) {
|
selectStrategy (key, useForm) {
|
||||||
this.selectedStrategy = key
|
this.selectedStrategy = key
|
||||||
this.screen = 'login'
|
this.screen = 'login'
|
||||||
@ -100,28 +102,10 @@ export default {
|
|||||||
this.$refs.iptEmail.focus()
|
this.$refs.iptEmail.focus()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
refreshStrategies () {
|
/**
|
||||||
this.isLoading = true
|
* LOGIN
|
||||||
this.$apollo.query({
|
*/
|
||||||
query: strategiesQuery
|
async login () {
|
||||||
}).then(resp => {
|
|
||||||
if (_.has(resp, 'data.authentication.providers')) {
|
|
||||||
this.strategies = _.get(resp, 'data.authentication.providers', [])
|
|
||||||
} else {
|
|
||||||
throw new Error('No authentication providers available!')
|
|
||||||
}
|
|
||||||
this.isLoading = false
|
|
||||||
}).catch(err => {
|
|
||||||
console.error(err)
|
|
||||||
this.$store.commit('showNotification', {
|
|
||||||
style: 'red',
|
|
||||||
message: err.message,
|
|
||||||
icon: 'warning'
|
|
||||||
})
|
|
||||||
this.isLoading = false
|
|
||||||
})
|
|
||||||
},
|
|
||||||
login () {
|
|
||||||
if (this.username.length < 2) {
|
if (this.username.length < 2) {
|
||||||
this.$store.commit('showNotification', {
|
this.$store.commit('showNotification', {
|
||||||
style: 'red',
|
style: 'red',
|
||||||
@ -138,14 +122,15 @@ export default {
|
|||||||
this.$refs.iptPassword.focus()
|
this.$refs.iptPassword.focus()
|
||||||
} else {
|
} else {
|
||||||
this.isLoading = true
|
this.isLoading = true
|
||||||
this.$apollo.mutate({
|
try {
|
||||||
|
let resp = await this.$apollo.mutate({
|
||||||
mutation: loginMutation,
|
mutation: loginMutation,
|
||||||
variables: {
|
variables: {
|
||||||
username: this.username,
|
username: this.username,
|
||||||
password: this.password,
|
password: this.password,
|
||||||
provider: this.selectedStrategy
|
strategy: this.selectedStrategy
|
||||||
}
|
}
|
||||||
}).then(resp => {
|
})
|
||||||
if (_.has(resp, 'data.authentication.login')) {
|
if (_.has(resp, 'data.authentication.login')) {
|
||||||
let respObj = _.get(resp, 'data.authentication.login', {})
|
let respObj = _.get(resp, 'data.authentication.login', {})
|
||||||
if (respObj.responseResult.succeeded === true) {
|
if (respObj.responseResult.succeeded === true) {
|
||||||
@ -173,7 +158,7 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
throw new Error('Authentication is unavailable.')
|
throw new Error('Authentication is unavailable.')
|
||||||
}
|
}
|
||||||
}).catch(err => {
|
} catch (err) {
|
||||||
console.error(err)
|
console.error(err)
|
||||||
this.$store.commit('showNotification', {
|
this.$store.commit('showNotification', {
|
||||||
style: 'red',
|
style: 'red',
|
||||||
@ -181,9 +166,12 @@ export default {
|
|||||||
icon: 'warning'
|
icon: 'warning'
|
||||||
})
|
})
|
||||||
this.isLoading = false
|
this.isLoading = false
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
/**
|
||||||
|
* VERIFY TFA CODE
|
||||||
|
*/
|
||||||
verifySecurityCode () {
|
verifySecurityCode () {
|
||||||
if (this.securityCode.length !== 6) {
|
if (this.securityCode.length !== 6) {
|
||||||
this.$store.commit('showNotification', {
|
this.$store.commit('showNotification', {
|
||||||
@ -230,6 +218,16 @@ export default {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
apollo: {
|
||||||
|
strategies: {
|
||||||
|
query: strategiesQuery,
|
||||||
|
update: (data) => data.authentication.strategies,
|
||||||
|
watchLoading (isLoading) {
|
||||||
|
this.isLoading = isLoading
|
||||||
|
this.$store.commit(`loading${isLoading ? 'Start' : 'Stop'}`, 'login-strategies-refresh')
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
mutation($username: String!, $password: String!, $provider: String!) {
|
mutation($username: String!, $password: String!, $strategy: String!) {
|
||||||
authentication {
|
authentication {
|
||||||
login(username: $username, password: $password, provider: $provider) {
|
login(username: $username, password: $password, strategy: $strategy) {
|
||||||
responseResult {
|
responseResult {
|
||||||
succeeded
|
succeeded
|
||||||
errorCode
|
errorCode
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
query {
|
query {
|
||||||
authentication {
|
authentication {
|
||||||
providers(
|
strategies(
|
||||||
filter: "isEnabled eq true",
|
filter: "isEnabled eq true",
|
||||||
orderBy: "title ASC"
|
orderBy: "title ASC"
|
||||||
) {
|
) {
|
||||||
|
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 35 KiB |
@ -171,13 +171,13 @@ module.exports = class User extends Model {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static async login (opts, context) {
|
static async login (opts, context) {
|
||||||
if (_.has(WIKI.config.auth.strategies, opts.provider)) {
|
if (_.has(WIKI.auth.strategies, opts.strategy)) {
|
||||||
_.set(context.req, 'body.email', opts.username)
|
_.set(context.req, 'body.email', opts.username)
|
||||||
_.set(context.req, 'body.password', opts.password)
|
_.set(context.req, 'body.password', opts.password)
|
||||||
|
|
||||||
// Authenticate
|
// Authenticate
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
WIKI.auth.passport.authenticate(opts.provider, async (err, user, info) => {
|
WIKI.auth.passport.authenticate(opts.strategy, async (err, user, info) => {
|
||||||
if (err) { return reject(err) }
|
if (err) { return reject(err) }
|
||||||
if (!user) { return reject(new WIKI.Error.AuthLoginFailed()) }
|
if (!user) { return reject(new WIKI.Error.AuthLoginFailed()) }
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
AuthenticationQuery: {
|
AuthenticationQuery: {
|
||||||
async strategies(obj, args, context, info) {
|
async strategies(obj, args, context, info) {
|
||||||
let strategies = await WIKI.db.authentication.query().orderBy('title')
|
let strategies = await WIKI.db.authentication.getEnabledStrategies()
|
||||||
strategies = strategies.map(stg => ({
|
strategies = strategies.map(stg => ({
|
||||||
...stg,
|
...stg,
|
||||||
config: _.transform(stg.config, (res, value, key) => {
|
config: _.transform(stg.config, (res, value, key) => {
|
||||||
|
@ -29,7 +29,7 @@ type AuthenticationMutation {
|
|||||||
login(
|
login(
|
||||||
username: String!
|
username: String!
|
||||||
password: String!
|
password: String!
|
||||||
provider: String!
|
strategy: String!
|
||||||
): AuthenticationLoginResponse
|
): AuthenticationLoginResponse
|
||||||
|
|
||||||
loginTFA(
|
loginTFA(
|
||||||
@ -38,7 +38,7 @@ type AuthenticationMutation {
|
|||||||
): DefaultResponse
|
): DefaultResponse
|
||||||
|
|
||||||
updateStrategy(
|
updateStrategy(
|
||||||
provider: String!
|
strategy: String!
|
||||||
isEnabled: Boolean!
|
isEnabled: Boolean!
|
||||||
config: [KeyValuePairInput]
|
config: [KeyValuePairInput]
|
||||||
): DefaultResponse
|
): DefaultResponse
|
||||||
|
@ -38,7 +38,7 @@ module.exports = async (job) => {
|
|||||||
|
|
||||||
// -> Download locale strings
|
// -> Download locale strings
|
||||||
|
|
||||||
if (WIKI.config.langAutoUpdate) {
|
if (WIKI.config.lang.autoUpdate) {
|
||||||
const respStrings = await apollo({
|
const respStrings = await apollo({
|
||||||
query: `query ($code: String!) {
|
query: `query ($code: String!) {
|
||||||
localization {
|
localization {
|
||||||
|
@ -7,7 +7,7 @@ module.exports = (req, res, next) => {
|
|||||||
// Is user authenticated ?
|
// Is user authenticated ?
|
||||||
|
|
||||||
if (!req.isAuthenticated()) {
|
if (!req.isAuthenticated()) {
|
||||||
if (WIKI.config.auth.public !== true) {
|
if (WIKI.config.public !== true) {
|
||||||
return res.redirect('/login')
|
return res.redirect('/login')
|
||||||
} else {
|
} else {
|
||||||
// req.user = rights.guest
|
// req.user = rights.guest
|
||||||
|
Loading…
Reference in New Issue
Block a user