Preparation for Oauth client registration
This commit is contained in:
		
					parent
					
						
							
								a696b7f427
							
						
					
				
			
			
				commit
				
					
						585d283ff9
					
				
			
		
					 7 changed files with 199 additions and 5 deletions
				
			
		
							
								
								
									
										68
									
								
								src/Module/Api/Mastodon/Apps.php
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								src/Module/Api/Mastodon/Apps.php
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,68 @@ | |||
| <?php | ||||
| /** | ||||
|  * @copyright Copyright (C) 2010-2021, the Friendica project | ||||
|  * | ||||
|  * @license GNU AGPL version 3 or any later version | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU Affero General Public License as | ||||
|  * published by the Free Software Foundation, either version 3 of the | ||||
|  * License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU Affero General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU Affero General Public License | ||||
|  * along with this program.  If not, see <https://www.gnu.org/licenses/>. | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| namespace Friendica\Module\Api\Mastodon; | ||||
| 
 | ||||
| use Friendica\Core\System; | ||||
| use Friendica\Database\DBA; | ||||
| use Friendica\DI; | ||||
| use Friendica\Module\BaseApi; | ||||
| 
 | ||||
| /** | ||||
|  * Apps class to register new OAuth clients | ||||
|  */ | ||||
| class Apps extends BaseApi | ||||
| { | ||||
| 	/** | ||||
| 	 * @param array $parameters | ||||
| 	 * @throws \Friendica\Network\HTTPException\InternalServerErrorException | ||||
| 	 */ | ||||
| 	public static function post(array $parameters = []) | ||||
| 	{ | ||||
| 		$name = !isset($_REQUEST['client_name']) ? '' : $_REQUEST['client_name']; | ||||
| 		$redirect = !isset($_REQUEST['redirect_uris']) ? '' : $_REQUEST['redirect_uris']; | ||||
| 		$scopes = !isset($_REQUEST['scopes']) ? '' : $_REQUEST['scopes']; | ||||
| 		$website = !isset($_REQUEST['website']) ? '' : $_REQUEST['website']; | ||||
| 
 | ||||
| 		if (empty($name) || empty($redirect)) { | ||||
| 			DI::mstdnError()->RecordNotFound(); | ||||
| 		} | ||||
| 
 | ||||
| 		$client_id = base64_encode(openssl_random_pseudo_bytes(32)); | ||||
| 		$client_secret = bin2hex(random_bytes(32)); | ||||
| 
 | ||||
| 		$fields = ['client_id' => $client_id, 'client_secret' => $client_secret, 'name' => $name, 'redirect_uri' => $redirect]; | ||||
| 
 | ||||
| 		if (!empty($scopes)) { | ||||
| 			$fields['scopes'] = $scopes; | ||||
| 		} | ||||
| 
 | ||||
| 		if (!empty($website)) { | ||||
| 			$fields['website'] = $website; | ||||
| 		} | ||||
| 
 | ||||
| 		if (!DBA::insert('application', $fields)) { | ||||
| 			DI::mstdnError()->RecordNotFound(); | ||||
| 		} | ||||
| 
 | ||||
| 		System::jsonExit(DI::mstdnApplication()->createFromApplicationId(DBA::lastInsertId())); | ||||
| 	} | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue