place core in a seperate module

pull/1/head
farid saravi 5 years ago
parent 3b48f1c959
commit 691770282b

@ -1,31 +0,0 @@
<?php
namespace App\CorePackages\Authenticate;
use Illuminate\Support\ServiceProvider;
class AthenticateServiceProvider extends ServiceProvider
{
protected $defer = true;
public function register()
{
$this->app->singleton(AuthFinderFacade::class, function () {
return AuthFinderFacade::user();
});
}
/**
* Get the services provided by the provider.
*
* @return array
*/
public function provides()
{
return [AuthFinder::class];
}
}

@ -1,27 +0,0 @@
<?php
namespace App\CorePackages\Authenticate;
class AuthFinder
{
public static function user() {
if (auth()->check()) {
return auth()->user();
} elseif (auth('api')->check()) {
return auth('api')->user();
}
return null;
}
public static function check() {
if (auth()->check() || auth('api')->check()) {
return true;
}
return false;
}
}

@ -1,11 +0,0 @@
<?php
namespace App\CorePackages\Authenticate;
use App\CorePackages\Authenticate\AuthFinder;
use Illuminate\Support\Facades\Facade;
class AuthFinderFacade extends Facade {
protected static function getFacadeAccessor() { return AuthFinder::class; }
}

@ -1,27 +0,0 @@
<?php
namespace App\CorePackages\Middleware;
use Closure;
use App\Business;
class VirtualActivity
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
$business = resolve(Business::class);
$request->merge([
'business_id' => $business->id,
]);
return $next($request);
}
}

@ -1,17 +0,0 @@
<?php
namespace App\CorePackages\Models;
use Illuminate\Database\Eloquent\Model;
use App\CorePackages\Scopes\RelatedToVirtualActivity;
abstract class VAModel extends Model
{
use RelatedToVirtualActivity;
public function attributeExists($attr)
{
return array_key_exists($attr, $this->attributes);
}
}

@ -1,23 +0,0 @@
<?php
namespace App\CorePackages;
trait RelatedToUser
{
/**
* The "booting" method of the model.
*
* @return void
*/
protected static function boot()
{
parent::boot();
static::creating(function($model) {
$model->user_id = 116;
});
}
}

@ -1,23 +0,0 @@
<?php
namespace App\CorePackages\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class UserResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
];
}
}

@ -1,27 +0,0 @@
<?php
namespace App\CorePackages\Scopes;
use App\CorePackages\Scopes\VirtualActivityScope;
trait RelatedToVirtualActivity
{
/**
* The "booting" method of the model.
*
* @return void
*/
protected static function boot()
{
parent::boot();
static::addGlobalScope(new VirtualActivityScope);
static::creating(function($model) {
$model->business_id = request()->business_id;
$model->user_id = 116;
});
}
}

@ -1,24 +0,0 @@
<?php
namespace App\CorePackages\Scopes;
use Illuminate\Database\Eloquent\Scope;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
use App\Business;
class VirtualActivityScope implements Scope
{
/**
* Apply the scope to a given Eloquent query builder.
*
* @param \Illuminate\Database\Eloquent\Builder $builder
* @param \Illuminate\Database\Eloquent\Model $model
* @return void
*/
public function apply(Builder $builder, Model $model)
{
$business = resolve(Business::class);
$builder->where('business_id', $business->id);
}
}

@ -1,10 +0,0 @@
<?php
namespace App\CorePackages\VirtualActivity\Exceptions;
use Exception;
class SiteNotFoundException extends Exception
{
}

@ -1,11 +0,0 @@
<?php
namespace App\CorePackages\VirtualActivity\Exceptions;
use Exception;
class VirtualActivityNotFoundException extends Exception
{
}

@ -1,77 +0,0 @@
<?php
namespace App\CorePackages\VirtualActivity;
use App\CorePackages\VirtualActivity\Exceptions\VirtualActivityNotFoundException;
use App\CorePackages\VirtualActivity\Exceptions\SiteNotFoundException;
use App\Site;
use App\Business;
class VirtualActivityFinder
{
/**
* .
*
* @var array
*/
protected static $mainDomains = [
'willamall.com',
'willaengine',
'willadevelop.ir',
];
/**
* finds business object based on "url" or "logged_in user".
*
* @return Business
*/
public static function fetch() {
$domain = static::findSiteName(request()->root());
$site = Site::where('domain', $domain)->first();
if ($site) {
return $site->user_template->business;
} elseif (in_array($domain, static::$mainDomains)) {
if ( \AuthFinder::check() && \AuthFinder::user()->last_used_business !== 0) {
return Business::findOrFail(\AuthFinder::user()->last_used_business);
}
throw new VirtualActivityNotFoundException('Business Not Found');
}
throw new SiteNotFoundException('Site Not Found');
}
/**
* finds site name based on specified url address.
*
* @param string $domain
* @return Business
*/
public static function findSiteName($domain) {
$array = explode('.', parse_url($domain, PHP_URL_HOST));
if (count($array) == 4) {
$domain = $array[1];
} elseif (count($array) == 3) {
if ($array[0] === 'www') {
$domain = $array[1] . '.' . $array[2];
} else {
$domain = $array[0];
}
} elseif (count($array) == 2) {
$domain = $array[0] . '.' . $array[1];
}
return $domain;
}
}

@ -1,56 +0,0 @@
<?php
namespace App\CorePackages\VirtualActivity;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\Validator;
use App\Business;
class VirtualActivityServiceProvider extends ServiceProvider
{
public function boot()
{
Validator::extend('exists_va', function ($attribute, $value, $parameters, $validator) {
$table = $parameters[0];
$column = $parameters[1];
return \DB::table($table)
->where($column, $value)
->where('business_id', request()->business_id)
->count() > 0;
});
}
public function register()
{
$this->app->singleton(Business::class, function () {
return VirtualActivityFinder::fetch();
});
$this->registerHandler();
}
protected function registerHandler()
{
Route::macro('handler', function ($prefix) {
$singular = Str::singular($prefix);
Route::group([
'namespace' => $singular
], function () use ($prefix, $singular) {
Route::get($prefix, 'Index' . $singular);
Route::post($prefix , 'Store' . $singular);
Route::put($prefix . '/{' . $singular . '}', 'Update' . $singular);
Route::delete($prefix . '/{' . $singular . '}', 'Destroy' . $singular);
Route::get($prefix . '/{' . $singular . '}', 'Show' . $singular);
});
});
}
}

@ -60,7 +60,6 @@ class Kernel extends HttpKernel
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'va' => \App\CorePackages\Middleware\VirtualActivity::class,
];
/**

@ -174,8 +174,7 @@ return [
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
App\CorePackages\VirtualActivity\VirtualActivityServiceProvider::class,
App\CorePackages\Authenticate\AthenticateServiceProvider::class,
// App\CorePackages\Authenticate\AthenticateServiceProvider::class,
],

Loading…
Cancel
Save