Projeto

Geral

Perfil

Revisão 3e379cec

Ver diferenças:

.editorconfig
1
root = true
2

  
3
[*]
4
charset = utf-8
5
end_of_line = lf
6
insert_final_newline = true
7
indent_style = space
8
indent_size = 4
9
trim_trailing_whitespace = true
10

  
11
[*.md]
12
trim_trailing_whitespace = false
13

  
14
[*.{yml,yaml}]
15
indent_size = 2
.gitignore
1
/vendor
2
/.idea
3
Homestead.json
4
Homestead.yaml
5
.env
6
.phpunit.result.cache
.styleci.yml
1
php:
2
  preset: laravel
3
  disabled:
4
    - unused_use
5
js: true
6
css: true
app/Console/Commands/Expresso/SieveGetUid.php
1
<?php
2

  
3
namespace App\Console\Commands\Expresso;
4

  
5
use Illuminate\Console\Command;
6
use Illuminate\Support\Facades\DB;
7
use Storage;
8

  
9
class SieveGetUid extends Command
10
{
11
    /**
12
     * The name and signature of the console command.
13
     *
14
     * @var string
15
     */
16
    protected $signature = 'expresso:sieve-get {--u|uid=} {cmd?}';
17

  
18
    /**
19
     * The console command description.
20
     *
21
     * @var string
22
     */
23
    protected $description = 'Lista os scripts sieve do usuario';
24

  
25
    /**
26
     * Create a new command instance.
27
     *
28
     * @return void
29
     */
30
    public function __construct()
31
    {
32
        parent::__construct();
33
    }
34

  
35
    /**
36
     * Execute the console command.
37
     *
38
     * @return mixed
39
     */
40
    public function handle()
41
    {
42
        $arguments = $this->arguments();
43

  
44
        $uid = $this->option('uid') ?? null;
45

  
46
        if( isset($arguments['cmd']) && $arguments['cmd'] == 'help' )
47
        {
48
            $this->help();
49

  
50
        } else {
51

  
52
            if( !is_null($uid) ){
53

  
54
                $sieveRules = $this->getSieveRules($uid);
55
                
56
                if( isset($arguments['cmd']) && $arguments['cmd'] == 'print' )
57
                {
58
                    $rules      = [];
59
                    foreach( $sieveRules as $key => $sieve ){
60
                        $rules[$key]['regra']       = unserialize( $sieve->rule );
61
                        $rules[$key]['habilitada']  = $sieve->is_enabled;
62
                        $rules[$key]['dt_criacao']  = date('d/m/Y', strtotime($sieve->created_dt));
63
                        
64
                        print_r( $rules[$key] );
65
                    }
66
                }
67

  
68
                if( isset($arguments['cmd']) && $arguments['cmd'] == 'file' )
69
                {
70
                    $lines = "Usuario : " . $uid . PHP_EOL;
71

  
72
                    foreach( $sieveRules as $key => $sieve ){
73
                        $lines .= "regra      : " . $sieve->rule . PHP_EOL;
74
                        $lines .= "habilitada : " . $sieve->is_enabled . PHP_EOL;
75
                        $lines .= "dt_criacao : " . date('d/m/Y', strtotime($sieve->created_dt)) . PHP_EOL;
76
                        $lines .= "************************************************************************" . PHP_EOL . PHP_EOL;
77
                    }
78

  
79
                    Storage::put('file/file_'.$uid.'.txt', $lines );
80
                }
81

  
82
                if( isset($arguments['cmd']) && $arguments['cmd'] == 'fileSogo' )
83
                {
84
                    print_r( storage_path('fileSogo') );
85
                }
86
            }
87
        }
88

  
89
        $this->newLine();
90
    }
91

  
92
    private function getSieveRules( $user )
93
    {
94
        $sieveRules = DB::connection('pgsql-expresso')
95
                            ->table('phpgw_sieve_rules')
96
                            ->where('fk_sieve_owner', $user )
97
                            ->get();
98

  
99
        return $sieveRules;
100
    }
101

  
102
    private function help()
103
    {
104
        $this->newLine();
105
        $this->info('EXEMPLO DE UTILIZACAO : ');
106
        $this->info('Ex: php artisan expresso:sieve-get --uid=<000000> { print | file | fileSogo }');
107
        $this->newLine();
108
    }
109
}
app/Console/Commands/Sogo/Preferences.php
1
<?php
2

  
3
namespace App\Console\Commands\Sogo;
4

  
5
use Illuminate\Console\Command;
6
use Illuminate\Support\Facades\DB;
7
use Storage;
8

  
9
class Preferences extends Command
10
{
11
    /**
12
     * The name and signature of the console command.
13
     *
14
     * @var string
15
     */
16
    protected $signature = 'sogo:preferences-get {--u|user=} {cmd?}';
17

  
18
    /**
19
     * The console command description.
20
     *
21
     * @var string
22
     */
23
    protected $description = 'Lista as preferencias sogo do usuario';
24

  
25
    /**
26
     * Create a new command instance.
27
     *
28
     * @return void
29
     */
30
    public function __construct()
31
    {
32
        parent::__construct();
33
    }
34

  
35
    /**
36
     * Execute the console command.
37
     *
38
     * @return mixed
39
     */
40
    public function handle()
41
    {
42
        $arguments = $this->arguments();
43

  
44
        $user = $this->option('user') ?? null;
45

  
46
        if( isset($arguments['cmd']) && $arguments['cmd'] == 'help' )
47
        {
48
            $this->help();
49
            
50
        } else {
51

  
52
            if( !is_null($user) ){
53

  
54
                $preferences =  $this->getPreferences($user);
55

  
56
                print_r( json_decode($preferences->c_defaults) );
57
            }
58
        }
59

  
60
        $this->newLine();
61
    }
62

  
63
    private function getPreferences( $user )
64
    {
65
        $preferences = DB::connection('pgsql-sogo')
66
                            ->table('sogo_user_profile')
67
                            ->where('c_uid', $user )
68
                            ->first();
69

  
70
        return $preferences;
71
    }
72

  
73
    private function help()
74
    {
75
        $this->newLine();
76
        $this->info('EXEMPLO DE UTILIZACAO : ');
77
        $this->info('Ex: php artisan sogo:preferences-get --user=<usuario> { print | file }');
78
        $this->newLine();
79
    }
80
}
app/Console/Kernel.php
1
<?php
2

  
3
namespace App\Console;
4

  
5
use Illuminate\Console\Scheduling\Schedule;
6
use Laravel\Lumen\Console\Kernel as ConsoleKernel;
7

  
8
class Kernel extends ConsoleKernel
9
{
10
    /**
11
     * The Artisan commands provided by your application.
12
     *
13
     * @var array
14
     */
15
    protected $commands = [
16
        \App\Console\Commands\Expresso\SieveGetUid::class,
17
        \App\Console\Commands\Sogo\Preferences::class
18
    ];
19

  
20
    /**
21
     * Define the application's command schedule.
22
     *
23
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
24
     * @return void
25
     */
26
    protected function schedule(Schedule $schedule)
27
    {
28
        //
29
    }
30
}
app/Events/Event.php
1
<?php
2

  
3
namespace App\Events;
4

  
5
use Illuminate\Queue\SerializesModels;
6

  
7
abstract class Event
8
{
9
    use SerializesModels;
10
}
app/Events/ExampleEvent.php
1
<?php
2

  
3
namespace App\Events;
4

  
5
class ExampleEvent extends Event
6
{
7
    /**
8
     * Create a new event instance.
9
     *
10
     * @return void
11
     */
12
    public function __construct()
13
    {
14
        //
15
    }
16
}
app/Exceptions/Handler.php
1
<?php
2

  
3
namespace App\Exceptions;
4

  
5
use Illuminate\Auth\Access\AuthorizationException;
6
use Illuminate\Database\Eloquent\ModelNotFoundException;
7
use Illuminate\Validation\ValidationException;
8
use Laravel\Lumen\Exceptions\Handler as ExceptionHandler;
9
use Symfony\Component\HttpKernel\Exception\HttpException;
10
use Throwable;
11

  
12
class Handler extends ExceptionHandler
13
{
14
    /**
15
     * A list of the exception types that should not be reported.
16
     *
17
     * @var array
18
     */
19
    protected $dontReport = [
20
        AuthorizationException::class,
21
        HttpException::class,
22
        ModelNotFoundException::class,
23
        ValidationException::class,
24
    ];
25

  
26
    /**
27
     * Report or log an exception.
28
     *
29
     * This is a great spot to send exceptions to Sentry, Bugsnag, etc.
30
     *
31
     * @param  \Throwable  $exception
32
     * @return void
33
     *
34
     * @throws \Exception
35
     */
36
    public function report(Throwable $exception)
37
    {
38
        parent::report($exception);
39
    }
40

  
41
    /**
42
     * Render an exception into an HTTP response.
43
     *
44
     * @param  \Illuminate\Http\Request  $request
45
     * @param  \Throwable  $exception
46
     * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse
47
     *
48
     * @throws \Throwable
49
     */
50
    public function render($request, Throwable $exception)
51
    {
52
        return parent::render($request, $exception);
53
    }
54
}
app/Http/Controllers/Controller.php
1
<?php
2

  
3
namespace App\Http\Controllers;
4

  
5
use Laravel\Lumen\Routing\Controller as BaseController;
6

  
7
class Controller extends BaseController
8
{
9
    //
10
}
app/Http/Controllers/ExampleController.php
1
<?php
2

  
3
namespace App\Http\Controllers;
4

  
5
class ExampleController extends Controller
6
{
7
    /**
8
     * Create a new controller instance.
9
     *
10
     * @return void
11
     */
12
    public function __construct()
13
    {
14
        //
15
    }
16

  
17
    //
18
}
app/Http/Middleware/Authenticate.php
1
<?php
2

  
3
namespace App\Http\Middleware;
4

  
5
use Closure;
6
use Illuminate\Contracts\Auth\Factory as Auth;
7

  
8
class Authenticate
9
{
10
    /**
11
     * The authentication guard factory instance.
12
     *
13
     * @var \Illuminate\Contracts\Auth\Factory
14
     */
15
    protected $auth;
16

  
17
    /**
18
     * Create a new middleware instance.
19
     *
20
     * @param  \Illuminate\Contracts\Auth\Factory  $auth
21
     * @return void
22
     */
23
    public function __construct(Auth $auth)
24
    {
25
        $this->auth = $auth;
26
    }
27

  
28
    /**
29
     * Handle an incoming request.
30
     *
31
     * @param  \Illuminate\Http\Request  $request
32
     * @param  \Closure  $next
33
     * @param  string|null  $guard
34
     * @return mixed
35
     */
36
    public function handle($request, Closure $next, $guard = null)
37
    {
38
        if ($this->auth->guard($guard)->guest()) {
39
            return response('Unauthorized.', 401);
40
        }
41

  
42
        return $next($request);
43
    }
44
}
app/Http/Middleware/ExampleMiddleware.php
1
<?php
2

  
3
namespace App\Http\Middleware;
4

  
5
use Closure;
6

  
7
class ExampleMiddleware
8
{
9
    /**
10
     * Handle an incoming request.
11
     *
12
     * @param  \Illuminate\Http\Request  $request
13
     * @param  \Closure  $next
14
     * @return mixed
15
     */
16
    public function handle($request, Closure $next)
17
    {
18
        return $next($request);
19
    }
20
}
app/Jobs/ExampleJob.php
1
<?php
2

  
3
namespace App\Jobs;
4

  
5
class ExampleJob extends Job
6
{
7
    /**
8
     * Create a new job instance.
9
     *
10
     * @return void
11
     */
12
    public function __construct()
13
    {
14
        //
15
    }
16

  
17
    /**
18
     * Execute the job.
19
     *
20
     * @return void
21
     */
22
    public function handle()
23
    {
24
        //
25
    }
26
}
app/Jobs/Job.php
1
<?php
2

  
3
namespace App\Jobs;
4

  
5
use Illuminate\Bus\Queueable;
6
use Illuminate\Contracts\Queue\ShouldQueue;
7
use Illuminate\Queue\InteractsWithQueue;
8
use Illuminate\Queue\SerializesModels;
9

  
10
abstract class Job implements ShouldQueue
11
{
12
    /*
13
    |--------------------------------------------------------------------------
14
    | Queueable Jobs
15
    |--------------------------------------------------------------------------
16
    |
17
    | This job base class provides a central location to place any logic that
18
    | is shared across all of your jobs. The trait included with the class
19
    | provides access to the "queueOn" and "delay" queue helper methods.
20
    |
21
    */
22

  
23
    use InteractsWithQueue, Queueable, SerializesModels;
24
}
app/Listeners/ExampleListener.php
1
<?php
2

  
3
namespace App\Listeners;
4

  
5
use App\Events\ExampleEvent;
6
use Illuminate\Contracts\Queue\ShouldQueue;
7
use Illuminate\Queue\InteractsWithQueue;
8

  
9
class ExampleListener
10
{
11
    /**
12
     * Create the event listener.
13
     *
14
     * @return void
15
     */
16
    public function __construct()
17
    {
18
        //
19
    }
20

  
21
    /**
22
     * Handle the event.
23
     *
24
     * @param  \App\Events\ExampleEvent  $event
25
     * @return void
26
     */
27
    public function handle(ExampleEvent $event)
28
    {
29
        //
30
    }
31
}
app/Models/User.php
1
<?php
2

  
3
namespace App\Models;
4

  
5
use Illuminate\Auth\Authenticatable;
6
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
7
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
8
use Illuminate\Database\Eloquent\Factories\HasFactory;
9
use Illuminate\Database\Eloquent\Model;
10
use Laravel\Lumen\Auth\Authorizable;
11

  
12
class User extends Model implements AuthenticatableContract, AuthorizableContract
13
{
14
    use Authenticatable, Authorizable, HasFactory;
15

  
16
    /**
17
     * The attributes that are mass assignable.
18
     *
19
     * @var array
20
     */
21
    protected $fillable = [
22
        'name', 'email',
23
    ];
24

  
25
    /**
26
     * The attributes excluded from the model's JSON form.
27
     *
28
     * @var array
29
     */
30
    protected $hidden = [
31
        'password',
32
    ];
33
}
app/Providers/AppServiceProvider.php
1
<?php
2

  
3
namespace App\Providers;
4

  
5
use Illuminate\Support\ServiceProvider;
6

  
7
class AppServiceProvider extends ServiceProvider
8
{
9
    /**
10
     * Register any application services.
11
     *
12
     * @return void
13
     */
14
    public function register()
15
    {
16
        //
17
    }
18
}
app/Providers/AuthServiceProvider.php
1
<?php
2

  
3
namespace App\Providers;
4

  
5
use App\Models\User;
6
use Illuminate\Support\Facades\Gate;
7
use Illuminate\Support\ServiceProvider;
8

  
9
class AuthServiceProvider extends ServiceProvider
10
{
11
    /**
12
     * Register any application services.
13
     *
14
     * @return void
15
     */
16
    public function register()
17
    {
18
        //
19
    }
20

  
21
    /**
22
     * Boot the authentication services for the application.
23
     *
24
     * @return void
25
     */
26
    public function boot()
27
    {
28
        // Here you may define how you wish users to be authenticated for your Lumen
29
        // application. The callback which receives the incoming request instance
30
        // should return either a User instance or null. You're free to obtain
31
        // the User instance via an API token or any other method necessary.
32

  
33
        $this->app['auth']->viaRequest('api', function ($request) {
34
            if ($request->input('api_token')) {
35
                return User::where('api_token', $request->input('api_token'))->first();
36
            }
37
        });
38
    }
39
}
app/Providers/EventServiceProvider.php
1
<?php
2

  
3
namespace App\Providers;
4

  
5
use Laravel\Lumen\Providers\EventServiceProvider as ServiceProvider;
6

  
7
class EventServiceProvider extends ServiceProvider
8
{
9
    /**
10
     * The event listener mappings for the application.
11
     *
12
     * @var array
13
     */
14
    protected $listen = [
15
        \App\Events\ExampleEvent::class => [
16
            \App\Listeners\ExampleListener::class,
17
        ],
18
    ];
19
}
app/ldap/config.php
1
<?php
2

  
3
use Illuminate\Support\Facades\DB;
4

  
5
// $ldapConfig = DB::connection('pgsql-expresso')
6
//                     ->table('phpgw_config')
7
//                     ->where('config_app', 'phpgwapi')
8
//                     ->whereIn('config_name', ['ldap_context','ldap_host','ldap_root_dn','ldap_root_pw'])
9
//                     ->get();
10

  
11
// return [
12
//     'hosts'            => '',
13
//     'base_dn'          => 'dc=local,dc=com',
14
//     'username'         => 'cn=admin,dc=local,dc=com',
15
//     'password'         => 'password',
16
//     'port'             => 389,
17
//     // 'use_ssl'          => false,
18
//     // 'use_tls'          => false,
19
//     // 'version'          => 3,
20
//     // 'timeout'          => 5,
21
//     // 'follow_referrals' => false,
22

  
23
//     // // Custom LDAP Options
24
//     // 'options' => [
25
//     //     // See: http://php.net/ldap_set_option
26
//     //     LDAP_OPT_X_TLS_REQUIRE_CERT => LDAP_OPT_X_TLS_HARD
27
//     // ]
28
// ];
artisan
1
#!/usr/bin/env php
2
<?php
3

  
4
use Symfony\Component\Console\Input\ArgvInput;
5
use Symfony\Component\Console\Output\ConsoleOutput;
6

  
7
/*
8
|--------------------------------------------------------------------------
9
| Create The Application
10
|--------------------------------------------------------------------------
11
|
12
| First we need to get an application instance. This creates an instance
13
| of the application / container and bootstraps the application so it
14
| is ready to receive HTTP / Console requests from the environment.
15
|
16
*/
17

  
18
$app = require __DIR__.'/bootstrap/app.php';
19

  
20
/*
21
|--------------------------------------------------------------------------
22
| Run The Artisan Application
23
|--------------------------------------------------------------------------
24
|
25
| When we run the console application, the current CLI command will be
26
| executed in this console and the response sent back to a terminal
27
| or another output device for the developers. Here goes nothing!
28
|
29
*/
30

  
31
$kernel = $app->make(
32
    'Illuminate\Contracts\Console\Kernel'
33
);
34

  
35
exit($kernel->handle(new ArgvInput, new ConsoleOutput));
bootstrap/app.php
1
<?php
2

  
3
require_once __DIR__.'/../vendor/autoload.php';
4

  
5
(new Laravel\Lumen\Bootstrap\LoadEnvironmentVariables(
6
    dirname(__DIR__)
7
))->bootstrap();
8

  
9
date_default_timezone_set(env('APP_TIMEZONE', 'UTC'));
10

  
11
/*
12
|--------------------------------------------------------------------------
13
| Create The Application
14
|--------------------------------------------------------------------------
15
|
16
| Here we will load the environment and create the application instance
17
| that serves as the central piece of this framework. We'll use this
18
| application as an "IoC" container and router for this framework.
19
|
20
*/
21

  
22
$app = new Laravel\Lumen\Application(
23
    dirname(__DIR__)
24
);
25

  
26
$app->withFacades();
27

  
28
$app->withEloquent();
29

  
30
/*
31
|--------------------------------------------------------------------------
32
| Register Container Bindings
33
|--------------------------------------------------------------------------
34
|
35
| Now we will register a few bindings in the service container. We will
36
| register the exception handler and the console kernel. You may add
37
| your own bindings here if you like or you can make another file.
38
|
39
*/
40

  
41
$app->singleton(
42
    Illuminate\Contracts\Debug\ExceptionHandler::class,
43
    App\Exceptions\Handler::class
44
);
45

  
46
$app->singleton(
47
    Illuminate\Contracts\Console\Kernel::class,
48
    App\Console\Kernel::class
49
);
50

  
51
/*
52
|--------------------------------------------------------------------------
53
| Register Config Files
54
|--------------------------------------------------------------------------
55
|
56
| Now we will register the "app" configuration file. If the file exists in
57
| your configuration directory it will be loaded; otherwise, we'll load
58
| the default version. You may register other files below as needed.
59
|
60
*/
61

  
62
$app->configure('app');
63

  
64
/*
65
|--------------------------------------------------------------------------
66
| Register Middleware
67
|--------------------------------------------------------------------------
68
|
69
| Next, we will register the middleware with the application. These can
70
| be global middleware that run before and after each request into a
71
| route or middleware that'll be assigned to some specific routes.
72
|
73
*/
74

  
75
// $app->middleware([
76
//     App\Http\Middleware\ExampleMiddleware::class
77
// ]);
78

  
79
// $app->routeMiddleware([
80
//     'auth' => App\Http\Middleware\Authenticate::class,
81
// ]);
82

  
83
/*
84
|--------------------------------------------------------------------------
85
| Register Service Providers
86
|--------------------------------------------------------------------------
87
|
88
| Here we will register all of the application's service providers which
89
| are used to bind services into the container. Service providers are
90
| totally optional, so you are not required to uncomment this line.
91
|
92
*/
93

  
94
// $app->register(App\Providers\AppServiceProvider::class);
95
// $app->register(App\Providers\AuthServiceProvider::class);
96
// $app->register(App\Providers\EventServiceProvider::class);
97

  
98
/*
99
|--------------------------------------------------------------------------
100
| Load The Application Routes
101
|--------------------------------------------------------------------------
102
|
103
| Next we will include the routes file so that they can all be added to
104
| the application. This will provide all of the URLs the application
105
| can respond to, as well as the controllers that may handle them.
106
|
107
*/
108

  
109
$app->router->group([
110
    'namespace' => 'App\Http\Controllers',
111
], function ($router) {
112
    require __DIR__.'/../routes/web.php';
113
});
114

  
115
return $app;
composer.json
1
{
2
    "name": "expressolivre/tools",
3
    "description": "Expresso tools",
4
    "keywords": ["framework", "laravel", "lumen"],
5
    "license": "MIT",
6
    "type": "project",
7
    "require": {
8
        "php": "^7.3|^8.0",
9
        "directorytree/ldaprecord": "^2.6",
10
        "laravel/lumen-framework": "^8.0"
11
    },
12
    "require-dev": {
13
        "fakerphp/faker": "^1.9.1",
14
        "league/flysystem": "^1.1",
15
        "mockery/mockery": "^1.3.1",
16
        "phpunit/phpunit": "^9.3"
17
    },
18
    "autoload": {
19
        "psr-4": {
20
            "App\\": "app/",
21
            "Database\\Factories\\": "database/factories/",
22
            "Database\\Seeders\\": "database/seeders/"
23
        }
24
    },
25
    "autoload-dev": {
26
        "classmap": [
27
            "tests/"
28
        ]
29
    },
30
    "config": {
31
        "preferred-install": "dist",
32
        "sort-packages": true,
33
        "optimize-autoloader": true
34
    },
35
    "minimum-stability": "dev",
36
    "prefer-stable": true,
37
    "scripts": {
38
        "post-root-package-install": [
39
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
40
        ]
41
    }
42
}
composer.lock
1
{
2
    "_readme": [
3
        "This file locks the dependencies of your project to a known state",
4
        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5
        "This file is @generated automatically"
6
    ],
7
    "content-hash": "28ba88bb80ebeca44000d28a62b18261",
8
    "packages": [
9
        {
10
            "name": "brick/math",
11
            "version": "0.9.3",
12
            "source": {
13
                "type": "git",
14
                "url": "https://github.com/brick/math.git",
15
                "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae"
16
            },
17
            "dist": {
18
                "type": "zip",
19
                "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae",
20
                "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae",
21
                "shasum": ""
22
            },
23
            "require": {
24
                "ext-json": "*",
25
                "php": "^7.1 || ^8.0"
26
            },
27
            "require-dev": {
28
                "php-coveralls/php-coveralls": "^2.2",
29
                "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0",
30
                "vimeo/psalm": "4.9.2"
31
            },
32
            "type": "library",
33
            "autoload": {
34
                "psr-4": {
35
                    "Brick\\Math\\": "src/"
36
                }
37
            },
38
            "notification-url": "https://packagist.org/downloads/",
39
            "license": [
40
                "MIT"
41
            ],
42
            "description": "Arbitrary-precision arithmetic library",
43
            "keywords": [
44
                "Arbitrary-precision",
45
                "BigInteger",
46
                "BigRational",
47
                "arithmetic",
48
                "bigdecimal",
49
                "bignum",
50
                "brick",
51
                "math"
52
            ],
53
            "support": {
54
                "issues": "https://github.com/brick/math/issues",
55
                "source": "https://github.com/brick/math/tree/0.9.3"
56
            },
57
            "funding": [
58
                {
59
                    "url": "https://github.com/BenMorel",
60
                    "type": "github"
61
                },
62
                {
63
                    "url": "https://tidelift.com/funding/github/packagist/brick/math",
64
                    "type": "tidelift"
65
                }
66
            ],
67
            "time": "2021-08-15T20:50:18+00:00"
68
        },
69
        {
70
            "name": "directorytree/ldaprecord",
71
            "version": "v2.6.3",
72
            "source": {
73
                "type": "git",
74
                "url": "https://github.com/DirectoryTree/LdapRecord.git",
75
                "reference": "5c93ec6d1ef458290825a8b0a148946dce7c1e7a"
76
            },
77
            "dist": {
78
                "type": "zip",
79
                "url": "https://api.github.com/repos/DirectoryTree/LdapRecord/zipball/5c93ec6d1ef458290825a8b0a148946dce7c1e7a",
80
                "reference": "5c93ec6d1ef458290825a8b0a148946dce7c1e7a",
81
                "shasum": ""
82
            },
83
            "require": {
84
                "ext-json": "*",
85
                "ext-ldap": "*",
86
                "illuminate/contracts": "^5.0|^6.0|^7.0|^8.0",
87
                "nesbot/carbon": "^1.0|^2.0",
88
                "php": ">=7.3",
89
                "psr/log": "^1.0",
90
                "psr/simple-cache": "^1.0",
91
                "tightenco/collect": "^5.6|^6.0|^7.0|^8.0"
92
            },
93
            "require-dev": {
94
                "mockery/mockery": "^1.0",
95
                "phpunit/phpunit": "^8.0",
96
                "spatie/ray": "^1.24"
97
            },
98
            "type": "library",
99
            "autoload": {
100
                "psr-4": {
101
                    "LdapRecord\\": "src/"
102
                }
103
            },
104
            "notification-url": "https://packagist.org/downloads/",
105
            "license": [
106
                "MIT"
107
            ],
108
            "authors": [
109
                {
110
                    "name": "Steve Bauman",
111
                    "email": "steven_bauman@outlook.com",
112
                    "role": "Developer"
113
                }
114
            ],
115
            "description": "A fully-featured LDAP ORM.",
116
            "homepage": "https://www.ldaprecord.com",
117
            "keywords": [
118
                "active directory",
119
                "ad",
120
                "adLDAP",
121
                "adldap2",
122
                "directory",
123
                "ldap",
124
                "ldaprecord",
125
                "orm",
126
                "windows"
127
            ],
128
            "support": {
129
                "docs": "https://ldaprecord.com",
130
                "email": "steven_bauman@outlook.com",
131
                "issues": "https://github.com/DirectoryTree/LdapRecord/issues",
132
                "source": "https://github.com/DirectoryTree/LdapRecord"
133
            },
134
            "funding": [
135
                {
136
                    "url": "https://github.com/stevebauman",
137
                    "type": "github"
138
                }
139
            ],
140
            "time": "2021-08-05T21:52:43+00:00"
141
        },
142
        {
143
            "name": "doctrine/inflector",
144
            "version": "2.0.3",
145
            "source": {
146
                "type": "git",
147
                "url": "https://github.com/doctrine/inflector.git",
148
                "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210"
149
            },
150
            "dist": {
151
                "type": "zip",
152
                "url": "https://api.github.com/repos/doctrine/inflector/zipball/9cf661f4eb38f7c881cac67c75ea9b00bf97b210",
153
                "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210",
154
                "shasum": ""
155
            },
156
            "require": {
157
                "php": "^7.2 || ^8.0"
158
            },
159
            "require-dev": {
160
                "doctrine/coding-standard": "^7.0",
161
                "phpstan/phpstan": "^0.11",
162
                "phpstan/phpstan-phpunit": "^0.11",
163
                "phpstan/phpstan-strict-rules": "^0.11",
164
                "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
165
            },
166
            "type": "library",
167
            "extra": {
168
                "branch-alias": {
169
                    "dev-master": "2.0.x-dev"
170
                }
171
            },
172
            "autoload": {
173
                "psr-4": {
174
                    "Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
175
                }
176
            },
177
            "notification-url": "https://packagist.org/downloads/",
178
            "license": [
179
                "MIT"
180
            ],
181
            "authors": [
182
                {
183
                    "name": "Guilherme Blanco",
184
                    "email": "guilhermeblanco@gmail.com"
185
                },
186
                {
187
                    "name": "Roman Borschel",
188
                    "email": "roman@code-factory.org"
189
                },
190
                {
191
                    "name": "Benjamin Eberlei",
192
                    "email": "kontakt@beberlei.de"
193
                },
194
                {
195
                    "name": "Jonathan Wage",
196
                    "email": "jonwage@gmail.com"
197
                },
198
                {
199
                    "name": "Johannes Schmitt",
200
                    "email": "schmittjoh@gmail.com"
201
                }
202
            ],
203
            "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.",
204
            "homepage": "https://www.doctrine-project.org/projects/inflector.html",
205
            "keywords": [
206
                "inflection",
207
                "inflector",
208
                "lowercase",
209
                "manipulation",
210
                "php",
211
                "plural",
212
                "singular",
213
                "strings",
214
                "uppercase",
215
                "words"
216
            ],
217
            "support": {
218
                "issues": "https://github.com/doctrine/inflector/issues",
219
                "source": "https://github.com/doctrine/inflector/tree/2.0.x"
220
            },
221
            "funding": [
222
                {
223
                    "url": "https://www.doctrine-project.org/sponsorship.html",
224
                    "type": "custom"
225
                },
226
                {
227
                    "url": "https://www.patreon.com/phpdoctrine",
228
                    "type": "patreon"
229
                },
230
                {
231
                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector",
232
                    "type": "tidelift"
233
                }
234
            ],
235
            "time": "2020-05-29T15:13:26+00:00"
236
        },
237
        {
238
            "name": "doctrine/lexer",
239
            "version": "1.2.1",
240
            "source": {
241
                "type": "git",
242
                "url": "https://github.com/doctrine/lexer.git",
243
                "reference": "e864bbf5904cb8f5bb334f99209b48018522f042"
244
            },
245
            "dist": {
246
                "type": "zip",
247
                "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042",
248
                "reference": "e864bbf5904cb8f5bb334f99209b48018522f042",
249
                "shasum": ""
250
            },
251
            "require": {
252
                "php": "^7.2 || ^8.0"
253
            },
254
            "require-dev": {
255
                "doctrine/coding-standard": "^6.0",
256
                "phpstan/phpstan": "^0.11.8",
257
                "phpunit/phpunit": "^8.2"
258
            },
259
            "type": "library",
260
            "extra": {
261
                "branch-alias": {
262
                    "dev-master": "1.2.x-dev"
263
                }
264
            },
265
            "autoload": {
266
                "psr-4": {
267
                    "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
268
                }
269
            },
270
            "notification-url": "https://packagist.org/downloads/",
271
            "license": [
272
                "MIT"
273
            ],
274
            "authors": [
275
                {
276
                    "name": "Guilherme Blanco",
277
                    "email": "guilhermeblanco@gmail.com"
278
                },
279
                {
280
                    "name": "Roman Borschel",
281
                    "email": "roman@code-factory.org"
282
                },
283
                {
284
                    "name": "Johannes Schmitt",
285
                    "email": "schmittjoh@gmail.com"
286
                }
287
            ],
288
            "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
289
            "homepage": "https://www.doctrine-project.org/projects/lexer.html",
290
            "keywords": [
291
                "annotations",
292
                "docblock",
293
                "lexer",
294
                "parser",
295
                "php"
296
            ],
297
            "support": {
298
                "issues": "https://github.com/doctrine/lexer/issues",
299
                "source": "https://github.com/doctrine/lexer/tree/1.2.1"
300
            },
301
            "funding": [
302
                {
303
                    "url": "https://www.doctrine-project.org/sponsorship.html",
304
                    "type": "custom"
305
                },
306
                {
307
                    "url": "https://www.patreon.com/phpdoctrine",
308
                    "type": "patreon"
309
                },
310
                {
311
                    "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer",
312
                    "type": "tidelift"
313
                }
314
            ],
315
            "time": "2020-05-25T17:44:05+00:00"
316
        },
317
        {
318
            "name": "dragonmantank/cron-expression",
319
            "version": "v3.1.0",
320
            "source": {
321
                "type": "git",
322
                "url": "https://github.com/dragonmantank/cron-expression.git",
323
                "reference": "7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c"
324
            },
325
            "dist": {
326
                "type": "zip",
327
                "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c",
328
                "reference": "7a8c6e56ab3ffcc538d05e8155bb42269abf1a0c",
329
                "shasum": ""
330
            },
331
            "require": {
332
                "php": "^7.2|^8.0",
333
                "webmozart/assert": "^1.7.0"
334
            },
335
            "replace": {
336
                "mtdowling/cron-expression": "^1.0"
337
            },
338
            "require-dev": {
339
                "phpstan/extension-installer": "^1.0",
340
                "phpstan/phpstan": "^0.12",
341
                "phpstan/phpstan-webmozart-assert": "^0.12.7",
342
                "phpunit/phpunit": "^7.0|^8.0|^9.0"
343
            },
344
            "type": "library",
345
            "autoload": {
346
                "psr-4": {
347
                    "Cron\\": "src/Cron/"
348
                }
349
            },
350
            "notification-url": "https://packagist.org/downloads/",
351
            "license": [
352
                "MIT"
353
            ],
354
            "authors": [
355
                {
356
                    "name": "Chris Tankersley",
357
                    "email": "chris@ctankersley.com",
358
                    "homepage": "https://github.com/dragonmantank"
359
                }
360
            ],
361
            "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due",
362
            "keywords": [
363
                "cron",
364
                "schedule"
365
            ],
366
            "support": {
367
                "issues": "https://github.com/dragonmantank/cron-expression/issues",
368
                "source": "https://github.com/dragonmantank/cron-expression/tree/v3.1.0"
369
            },
370
            "funding": [
371
                {
372
                    "url": "https://github.com/dragonmantank",
373
                    "type": "github"
374
                }
375
            ],
376
            "time": "2020-11-24T19:55:57+00:00"
377
        },
378
        {
379
            "name": "egulias/email-validator",
380
            "version": "2.1.25",
381
            "source": {
382
                "type": "git",
383
                "url": "https://github.com/egulias/EmailValidator.git",
384
                "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4"
385
            },
386
            "dist": {
387
                "type": "zip",
388
                "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4",
389
                "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4",
390
                "shasum": ""
391
            },
392
            "require": {
393
                "doctrine/lexer": "^1.0.1",
394
                "php": ">=5.5",
395
                "symfony/polyfill-intl-idn": "^1.10"
396
            },
397
            "require-dev": {
398
                "dominicsayers/isemail": "^3.0.7",
399
                "phpunit/phpunit": "^4.8.36|^7.5.15",
400
                "satooshi/php-coveralls": "^1.0.1"
401
            },
402
            "suggest": {
403
                "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation"
404
            },
405
            "type": "library",
406
            "extra": {
407
                "branch-alias": {
408
                    "dev-master": "2.1.x-dev"
409
                }
410
            },
411
            "autoload": {
412
                "psr-4": {
413
                    "Egulias\\EmailValidator\\": "src"
414
                }
415
            },
416
            "notification-url": "https://packagist.org/downloads/",
417
            "license": [
418
                "MIT"
419
            ],
420
            "authors": [
421
                {
422
                    "name": "Eduardo Gulias Davis"
423
                }
424
            ],
425
            "description": "A library for validating emails against several RFCs",
426
            "homepage": "https://github.com/egulias/EmailValidator",
427
            "keywords": [
428
                "email",
429
                "emailvalidation",
430
                "emailvalidator",
431
                "validation",
432
                "validator"
433
            ],
434
            "support": {
435
                "issues": "https://github.com/egulias/EmailValidator/issues",
436
                "source": "https://github.com/egulias/EmailValidator/tree/2.1.25"
437
            },
438
            "funding": [
439
                {
440
                    "url": "https://github.com/egulias",
441
                    "type": "github"
442
                }
443
            ],
444
            "time": "2020-12-29T14:50:06+00:00"
445
        },
446
        {
447
            "name": "graham-campbell/result-type",
448
            "version": "v1.0.1",
449
            "source": {
450
                "type": "git",
451
                "url": "https://github.com/GrahamCampbell/Result-Type.git",
452
                "reference": "7e279d2cd5d7fbb156ce46daada972355cea27bb"
453
            },
454
            "dist": {
455
                "type": "zip",
456
                "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/7e279d2cd5d7fbb156ce46daada972355cea27bb",
457
                "reference": "7e279d2cd5d7fbb156ce46daada972355cea27bb",
458
                "shasum": ""
459
            },
460
            "require": {
461
                "php": "^7.0|^8.0",
462
                "phpoption/phpoption": "^1.7.3"
463
            },
464
            "require-dev": {
465
                "phpunit/phpunit": "^6.5|^7.5|^8.5|^9.0"
466
            },
467
            "type": "library",
468
            "extra": {
469
                "branch-alias": {
470
                    "dev-master": "1.0-dev"
471
                }
472
            },
473
            "autoload": {
474
                "psr-4": {
475
                    "GrahamCampbell\\ResultType\\": "src/"
476
                }
477
            },
478
            "notification-url": "https://packagist.org/downloads/",
479
            "license": [
480
                "MIT"
481
            ],
482
            "authors": [
483
                {
484
                    "name": "Graham Campbell",
485
                    "email": "graham@alt-three.com"
486
                }
487
            ],
488
            "description": "An Implementation Of The Result Type",
489
            "keywords": [
490
                "Graham Campbell",
491
                "GrahamCampbell",
492
                "Result Type",
493
                "Result-Type",
494
                "result"
495
            ],
496
            "support": {
497
                "issues": "https://github.com/GrahamCampbell/Result-Type/issues",
498
                "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.1"
499
            },
500
            "funding": [
501
                {
502
                    "url": "https://github.com/GrahamCampbell",
503
                    "type": "github"
504
                },
505
                {
506
                    "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type",
507
                    "type": "tidelift"
508
                }
509
            ],
510
            "time": "2020-04-13T13:17:36+00:00"
511
        },
... Este diff foi truncado porque excede o tamanho máximo que pode ser exibido.

Exportar para Unified diff