mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-10-27 11:18:14 +01:00 
			
		
		
		
	Add server settings for changing openid button text and auto launching openid
This commit is contained in:
		
							parent
							
								
									ab14b561f5
								
							
						
					
					
						commit
						828b96b2d9
					
				| @ -26,6 +26,14 @@ | ||||
|               <ui-text-input-with-label ref="openidClientId" v-model="newAuthSettings.authOpenIDClientID" :disabled="savingSettings" :label="'Client ID'" class="mb-2" /> | ||||
| 
 | ||||
|               <ui-text-input-with-label ref="openidClientSecret" v-model="newAuthSettings.authOpenIDClientSecret" :disabled="savingSettings" :label="'Client Secret'" class="mb-2" /> | ||||
| 
 | ||||
|               <ui-text-input-with-label ref="buttonTextInput" v-model="newAuthSettings.authOpenIDButtonText" :disabled="savingSettings" :label="'Button Text'" class="mb-2" /> | ||||
| 
 | ||||
|               <div class="flex items-center py-2 px-1"> | ||||
|                 <ui-toggle-switch labeledBy="auto-redirect-toggle" v-model="newAuthSettings.authOpenIDAutoLaunch" :disabled="savingSettings" /> | ||||
|                 <p id="auto-redirect-toggle" class="pl-4">Auto Launch</p> | ||||
|                 <p class="pl-4 text-sm text-gray-300">Redirect to the auth provider automatically when navigating to the /login page</p> | ||||
|               </div> | ||||
|             </div> | ||||
|           </transition> | ||||
|         </div> | ||||
|  | ||||
| @ -48,7 +48,7 @@ | ||||
|             <ui-btn color="primary" class="leading-none">Login with Google</ui-btn> | ||||
|           </a> | ||||
|           <a v-show="login_openid" :href="openidAuthUri"> | ||||
|             <ui-btn color="primary" class="leading-none">Login with OpenId</ui-btn> | ||||
|             <ui-btn color="primary" class="leading-none">{{ openIDButtonText }}</ui-btn> | ||||
|           </a> | ||||
|         </div> | ||||
|       </div> | ||||
| @ -77,7 +77,8 @@ export default { | ||||
|       MetadataPath: '', | ||||
|       login_local: true, | ||||
|       login_google_oauth20: false, | ||||
|       login_openid: false | ||||
|       login_openid: false, | ||||
|       authFormData: null | ||||
|     } | ||||
|   }, | ||||
|   watch: { | ||||
| @ -116,6 +117,9 @@ export default { | ||||
|     }, | ||||
|     openidAuthUri() { | ||||
|       return `${process.env.serverUrl}/auth/openid?callback=${location.toString()}` | ||||
|     }, | ||||
|     openIDButtonText() { | ||||
|       return this.authFormData?.authOpenIDButtonText || 'Login with OpenId' | ||||
|     } | ||||
|   }, | ||||
|   methods: { | ||||
| @ -221,7 +225,6 @@ export default { | ||||
|       this.$axios | ||||
|         .$get('/status') | ||||
|         .then((data) => { | ||||
|           this.processing = false | ||||
|           this.isInit = data.isInit | ||||
|           this.showInitScreen = !data.isInit | ||||
|           this.$setServerLanguageCode(data.language) | ||||
| @ -229,14 +232,17 @@ export default { | ||||
|             this.ConfigPath = data.ConfigPath || '' | ||||
|             this.MetadataPath = data.MetadataPath || '' | ||||
|           } else { | ||||
|             this.authFormData = data.authFormData | ||||
|             this.updateLoginVisibility(data.authMethods || []) | ||||
|           } | ||||
|         }) | ||||
|         .catch((error) => { | ||||
|           console.error('Status check failed', error) | ||||
|           this.processing = false | ||||
|           this.criticalError = 'Status check failed' | ||||
|         }) | ||||
|         .finally(() => { | ||||
|           this.processing = false | ||||
|         }) | ||||
|     }, | ||||
|     updateLoginVisibility(authMethods) { | ||||
|       if (authMethods.includes('local') || !authMethods.length) { | ||||
| @ -252,6 +258,11 @@ export default { | ||||
|       } | ||||
| 
 | ||||
|       if (authMethods.includes('openid')) { | ||||
|         // Auto redirect unless query string ?autoLaunch=0 | ||||
|         if (this.authFormData?.authOpenIDAutoLaunch && this.$route.query?.autoLaunch !== '0') { | ||||
|           window.location.href = this.openidAuthUri | ||||
|         } | ||||
| 
 | ||||
|         this.login_openid = true | ||||
|       } else { | ||||
|         this.login_openid = false | ||||
|  | ||||
| @ -230,7 +230,8 @@ class Server { | ||||
|       const payload = { | ||||
|         isInit: Database.hasRootUser, | ||||
|         language: Database.serverSettings.language, | ||||
|         authMethods: Database.serverSettings.authActiveAuthMethods | ||||
|         authMethods: Database.serverSettings.authActiveAuthMethods, | ||||
|         authFormData: Database.serverSettings.authFormData | ||||
|       } | ||||
|       if (!payload.isInit) { | ||||
|         payload.ConfigPath = global.ConfigPath | ||||
|  | ||||
| @ -70,6 +70,8 @@ class ServerSettings { | ||||
|     this.authOpenIDUserInfoURL = '' | ||||
|     this.authOpenIDClientID = '' | ||||
|     this.authOpenIDClientSecret = '' | ||||
|     this.authOpenIDButtonText = 'Login with OpenId' | ||||
|     this.authOpenIDAutoLaunch = false | ||||
| 
 | ||||
|     if (settings) { | ||||
|       this.construct(settings) | ||||
| @ -122,12 +124,14 @@ class ServerSettings { | ||||
|     this.authOpenIDUserInfoURL = settings.authOpenIDUserInfoURL || '' | ||||
|     this.authOpenIDClientID = settings.authOpenIDClientID || '' | ||||
|     this.authOpenIDClientSecret = settings.authOpenIDClientSecret || '' | ||||
|     this.authOpenIDButtonText = settings.authOpenIDButtonText || 'Login with OpenId' | ||||
|     this.authOpenIDAutoLaunch = !!settings.authOpenIDAutoLaunch | ||||
| 
 | ||||
|     if (!Array.isArray(this.authActiveAuthMethods)) { | ||||
|       this.authActiveAuthMethods = ['local'] | ||||
|     } | ||||
| 
 | ||||
|     // remove uninitialized methods    
 | ||||
|     // remove uninitialized methods
 | ||||
|     // GoogleOauth20
 | ||||
|     if (this.authActiveAuthMethods.includes('google-oauth20') && ( | ||||
|       this.authGoogleOauth20ClientID === '' || | ||||
| @ -137,7 +141,7 @@ class ServerSettings { | ||||
|       this.authActiveAuthMethods.splice(this.authActiveAuthMethods.indexOf('google-oauth20', 0), 1) | ||||
|     } | ||||
| 
 | ||||
|     // remove uninitialized methods    
 | ||||
|     // remove uninitialized methods
 | ||||
|     // OpenID
 | ||||
|     if (this.authActiveAuthMethods.includes('openid') && ( | ||||
|       this.authOpenIDIssuerURL === '' || | ||||
| @ -221,7 +225,9 @@ class ServerSettings { | ||||
|       authOpenIDTokenURL: this.authOpenIDTokenURL, | ||||
|       authOpenIDUserInfoURL: this.authOpenIDUserInfoURL, | ||||
|       authOpenIDClientID: this.authOpenIDClientID, // Do not return to client
 | ||||
|       authOpenIDClientSecret: this.authOpenIDClientSecret // Do not return to client
 | ||||
|       authOpenIDClientSecret: this.authOpenIDClientSecret, // Do not return to client
 | ||||
|       authOpenIDButtonText: this.authOpenIDButtonText, | ||||
|       authOpenIDAutoLaunch: this.authOpenIDAutoLaunch | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
| @ -246,10 +252,21 @@ class ServerSettings { | ||||
|       authOpenIDTokenURL: this.authOpenIDTokenURL, | ||||
|       authOpenIDUserInfoURL: this.authOpenIDUserInfoURL, | ||||
|       authOpenIDClientID: this.authOpenIDClientID, // Do not return to client
 | ||||
|       authOpenIDClientSecret: this.authOpenIDClientSecret // Do not return to client
 | ||||
|       authOpenIDClientSecret: this.authOpenIDClientSecret, // Do not return to client
 | ||||
|       authOpenIDButtonText: this.authOpenIDButtonText, | ||||
|       authOpenIDAutoLaunch: this.authOpenIDAutoLaunch | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   get authFormData() { | ||||
|     const clientFormData = {} | ||||
|     if (this.authActiveAuthMethods.includes('openid')) { | ||||
|       clientFormData.authOpenIDButtonText = this.authOpenIDButtonText | ||||
|       clientFormData.authOpenIDAutoLaunch = this.authOpenIDAutoLaunch | ||||
|     } | ||||
|     return clientFormData | ||||
|   } | ||||
| 
 | ||||
|   /** | ||||
|    * Update server settings | ||||
|    *  | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user