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