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);
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
Loading…
Reference in new issue