fix: client login
This commit is contained in:
		| @@ -86,10 +86,12 @@ export default { | ||||
|     } | ||||
|   }, | ||||
|   mounted () { | ||||
|     this.refreshStrategies() | ||||
|     this.$refs.iptEmail.focus() | ||||
|   }, | ||||
|   methods: { | ||||
|     /** | ||||
|      * SELECT STRATEGY | ||||
|      */ | ||||
|     selectStrategy (key, useForm) { | ||||
|       this.selectedStrategy = key | ||||
|       this.screen = 'login' | ||||
| @@ -100,28 +102,10 @@ export default { | ||||
|         this.$refs.iptEmail.focus() | ||||
|       } | ||||
|     }, | ||||
|     refreshStrategies () { | ||||
|       this.isLoading = true | ||||
|       this.$apollo.query({ | ||||
|         query: strategiesQuery | ||||
|       }).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 () { | ||||
|     /** | ||||
|      * LOGIN | ||||
|      */ | ||||
|     async login () { | ||||
|       if (this.username.length < 2) { | ||||
|         this.$store.commit('showNotification', { | ||||
|           style: 'red', | ||||
| @@ -138,14 +122,15 @@ export default { | ||||
|         this.$refs.iptPassword.focus() | ||||
|       } else { | ||||
|         this.isLoading = true | ||||
|         this.$apollo.mutate({ | ||||
|           mutation: loginMutation, | ||||
|           variables: { | ||||
|             username: this.username, | ||||
|             password: this.password, | ||||
|             provider: this.selectedStrategy | ||||
|           } | ||||
|         }).then(resp => { | ||||
|         try { | ||||
|           let resp = await this.$apollo.mutate({ | ||||
|             mutation: loginMutation, | ||||
|             variables: { | ||||
|               username: this.username, | ||||
|               password: this.password, | ||||
|               strategy: this.selectedStrategy | ||||
|             } | ||||
|           }) | ||||
|           if (_.has(resp, 'data.authentication.login')) { | ||||
|             let respObj = _.get(resp, 'data.authentication.login', {}) | ||||
|             if (respObj.responseResult.succeeded === true) { | ||||
| @@ -173,7 +158,7 @@ export default { | ||||
|           } else { | ||||
|             throw new Error('Authentication is unavailable.') | ||||
|           } | ||||
|         }).catch(err => { | ||||
|         } catch (err) { | ||||
|           console.error(err) | ||||
|           this.$store.commit('showNotification', { | ||||
|             style: 'red', | ||||
| @@ -181,9 +166,12 @@ export default { | ||||
|             icon: 'warning' | ||||
|           }) | ||||
|           this.isLoading = false | ||||
|         }) | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     /** | ||||
|      * VERIFY TFA CODE | ||||
|      */ | ||||
|     verifySecurityCode () { | ||||
|       if (this.securityCode.length !== 6) { | ||||
|         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> | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| mutation($username: String!, $password: String!, $provider: String!) { | ||||
| mutation($username: String!, $password: String!, $strategy: String!) { | ||||
|   authentication { | ||||
|     login(username: $username, password: $password, provider: $provider) { | ||||
|     login(username: $username, password: $password, strategy: $strategy) { | ||||
|       responseResult { | ||||
|         succeeded | ||||
|         errorCode | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| query { | ||||
|   authentication { | ||||
|     providers( | ||||
|     strategies( | ||||
|       filter: "isEnabled eq true", | ||||
|       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) { | ||||
|     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.password', opts.password) | ||||
|  | ||||
|       // Authenticate | ||||
|       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 (!user) { return reject(new WIKI.Error.AuthLoginFailed()) } | ||||
|  | ||||
|   | ||||
| @@ -16,7 +16,7 @@ module.exports = { | ||||
|   }, | ||||
|   AuthenticationQuery: { | ||||
|     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 => ({ | ||||
|         ...stg, | ||||
|         config: _.transform(stg.config, (res, value, key) => { | ||||
|   | ||||
| @@ -29,7 +29,7 @@ type AuthenticationMutation { | ||||
|   login( | ||||
|     username: String! | ||||
|     password: String! | ||||
|     provider: String! | ||||
|     strategy: String! | ||||
|   ): AuthenticationLoginResponse | ||||
|  | ||||
|   loginTFA( | ||||
| @@ -38,7 +38,7 @@ type AuthenticationMutation { | ||||
|   ): DefaultResponse | ||||
|  | ||||
|   updateStrategy( | ||||
|     provider: String! | ||||
|     strategy: String! | ||||
|     isEnabled: Boolean! | ||||
|     config: [KeyValuePairInput] | ||||
|   ): DefaultResponse | ||||
|   | ||||
| @@ -38,7 +38,7 @@ module.exports = async (job) => { | ||||
|  | ||||
|     // -> Download locale strings | ||||
|  | ||||
|     if (WIKI.config.langAutoUpdate) { | ||||
|     if (WIKI.config.lang.autoUpdate) { | ||||
|       const respStrings = await apollo({ | ||||
|         query: `query ($code: String!) { | ||||
|           localization { | ||||
|   | ||||
| @@ -7,7 +7,7 @@ module.exports = (req, res, next) => { | ||||
|   // Is user authenticated ? | ||||
|  | ||||
|   if (!req.isAuthenticated()) { | ||||
|     if (WIKI.config.auth.public !== true) { | ||||
|     if (WIKI.config.public !== true) { | ||||
|       return res.redirect('/login') | ||||
|     } else { | ||||
|       // req.user = rights.guest | ||||
|   | ||||
		Reference in New Issue
	
	Block a user