60 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Models;
 | |
| 
 | |
| use phpseclib3\Crypt\PublicKeyLoader;
 | |
| 
 | |
| class PrivateKey extends BaseModel
 | |
| {
 | |
|     protected $fillable = [
 | |
|         'name',
 | |
|         'description',
 | |
|         'private_key',
 | |
|         'is_git_related',
 | |
|         'team_id',
 | |
|     ];
 | |
| 
 | |
|     static public function ownedByCurrentTeam(array $select = ['*'])
 | |
|     {
 | |
|         $selectArray = collect($select)->concat(['id']);
 | |
|         return PrivateKey::whereTeamId(currentTeam()->id)->select($selectArray->all());
 | |
|     }
 | |
| 
 | |
|     public function publicKey()
 | |
|     {
 | |
|         try {
 | |
|             return PublicKeyLoader::load($this->private_key)->getPublicKey()->toString('OpenSSH',['comment' => '']);
 | |
|         } catch (\Throwable $e) {
 | |
|             return 'Error loading private key';
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public function isEmpty()
 | |
|     {
 | |
|         if ($this->servers()->count() === 0 && $this->applications()->count() === 0 && $this->githubApps()->count() === 0 && $this->gitlabApps()->count() === 0) {
 | |
|             return true;
 | |
|         }
 | |
|         return false;
 | |
|     }
 | |
| 
 | |
|     public function servers()
 | |
|     {
 | |
|         return $this->hasMany(Server::class);
 | |
|     }
 | |
| 
 | |
|     public function applications()
 | |
|     {
 | |
|         return $this->hasMany(Application::class);
 | |
|     }
 | |
| 
 | |
|     public function githubApps()
 | |
|     {
 | |
|         return $this->hasMany(GithubApp::class);
 | |
|     }
 | |
| 
 | |
|     public function gitlabApps()
 | |
|     {
 | |
|         return $this->hasMany(GitlabApp::class);
 | |
|     }
 | |
| }
 | 
