52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Livewire;
 | |
| 
 | |
| use App\Models\OauthSetting;
 | |
| use Livewire\Component;
 | |
| 
 | |
| class SettingsOauth extends Component
 | |
| {
 | |
|     public $oauth_settings_map;
 | |
| 
 | |
|     protected function rules()
 | |
|     {
 | |
|         return OauthSetting::all()->reduce(function ($carry, $setting) {
 | |
|             $carry["oauth_settings_map.$setting->provider.enabled"] = 'required';
 | |
|             $carry["oauth_settings_map.$setting->provider.client_id"] = 'nullable';
 | |
|             $carry["oauth_settings_map.$setting->provider.client_secret"] = 'nullable';
 | |
|             $carry["oauth_settings_map.$setting->provider.redirect_uri"] = 'nullable';
 | |
|             $carry["oauth_settings_map.$setting->provider.tenant"] = 'nullable';
 | |
| 
 | |
|             return $carry;
 | |
|         }, []);
 | |
|     }
 | |
| 
 | |
|     public function mount()
 | |
|     {
 | |
|         $this->oauth_settings_map = OauthSetting::all()->sortBy('provider')->reduce(function ($carry, $setting) {
 | |
|             $carry[$setting->provider] = $setting;
 | |
| 
 | |
|             return $carry;
 | |
|         }, []);
 | |
|     }
 | |
| 
 | |
|     private function updateOauthSettings()
 | |
|     {
 | |
|         foreach (array_values($this->oauth_settings_map) as &$setting) {
 | |
|             $setting->save();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public function instantSave()
 | |
|     {
 | |
|         $this->updateOauthSettings();
 | |
|     }
 | |
| 
 | |
|     public function submit()
 | |
|     {
 | |
|         $this->updateOauthSettings();
 | |
|         $this->dispatch('success', 'Instance settings updated successfully!');
 | |
|     }
 | |
| }
 | 
