mirror of https://github.com/pixelfed/pixelfed
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			PHP
		
	
<?php
 | 
						|
 | 
						|
namespace App\Listeners;
 | 
						|
 | 
						|
use DB, Cache;
 | 
						|
use App\{
 | 
						|
    Follower,
 | 
						|
    Profile,
 | 
						|
    User,
 | 
						|
    UserFilter,
 | 
						|
    UserSetting
 | 
						|
};
 | 
						|
use Illuminate\Queue\InteractsWithQueue;
 | 
						|
use App\Jobs\AvatarPipeline\CreateAvatar;
 | 
						|
use Illuminate\Contracts\Queue\ShouldQueue;
 | 
						|
 | 
						|
class AuthLogin
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * Handle the event.
 | 
						|
     *
 | 
						|
     * @param  object  $event
 | 
						|
     * @return void
 | 
						|
     */
 | 
						|
    public function handle($event)
 | 
						|
    {
 | 
						|
        $user = $event->user;
 | 
						|
        if (empty($user->settings)) {
 | 
						|
            DB::transaction(function() use($user) {
 | 
						|
                UserSetting::firstOrCreate([
 | 
						|
                    'user_id' => $user->id
 | 
						|
                ]);
 | 
						|
            });
 | 
						|
        }
 | 
						|
        
 | 
						|
        if(empty($user->profile)) {
 | 
						|
            DB::transaction(function() use($user) {
 | 
						|
                $profile = new Profile();
 | 
						|
                $profile->user_id = $user->id;
 | 
						|
                $profile->username = $user->username;
 | 
						|
                $profile->name = $user->name;
 | 
						|
                $pkiConfig = [
 | 
						|
                    'digest_alg'       => 'sha512',
 | 
						|
                    'private_key_bits' => 2048,
 | 
						|
                    'private_key_type' => OPENSSL_KEYTYPE_RSA,
 | 
						|
                ];
 | 
						|
                $pki = openssl_pkey_new($pkiConfig);
 | 
						|
                openssl_pkey_export($pki, $pki_private);
 | 
						|
                $pki_public = openssl_pkey_get_details($pki);
 | 
						|
                $pki_public = $pki_public['key'];
 | 
						|
 | 
						|
                $profile->private_key = $pki_private;
 | 
						|
                $profile->public_key = $pki_public;
 | 
						|
                $profile->save();
 | 
						|
 | 
						|
                CreateAvatar::dispatch($profile);
 | 
						|
            });
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |