Skip to content

Commit

Permalink
Fix tenant admin page.
Browse files Browse the repository at this point in the history
  • Loading branch information
mikebronner committed Sep 13, 2019
1 parent f225841 commit 8f203a5
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 64 deletions.
24 changes: 14 additions & 10 deletions composer.json
Expand Up @@ -13,22 +13,26 @@
}
],
"require": {
"hyn/multi-tenant": "5.5.*",
"laravel/framework": "6.*",
"laravel/nova": "2.*"
"hyn/multi-tenant": "^5.5.0",
"illuminate/console": "^6.0",
"illuminate/database": "^6.0",
"illuminate/http": "^6.0",
"illuminate/routing": "^6.0",
"illuminate/support": "^6.0",
"laravel/nova": "*"
},
"require-dev": {
"fzaninotto/faker": "*",
"mockery/mockery": "*",
"fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0",
"orchestra/testbench": "^4.0",
"orchestra/testbench-browser-kit": "^4.0",
"orchestra/testbench-dusk": "^4.0",
"orchestra/testbench": "^4.0",
"php-coveralls/php-coveralls": "*",
"phpmd/phpmd": "*",
"phpmd/phpmd": "^2.7",
"phpunit/phpunit": "^8.0",
"predis/predis": "*",
"sebastian/phpcpd": "*",
"symfony/thanks": "*"
"sebastian/phpcpd": "^4.1",
"squizlabs/php_codesniffer": "^3.4",
"symfony/thanks": "^1.1"
},
"autoload": {
"psr-4": {
Expand Down
51 changes: 0 additions & 51 deletions src/Http/Controllers/Api/TenantController.php
@@ -1,7 +1,5 @@
<?php namespace GeneaLabs\NovaMultiTenantManager\Http\Controllers\Api;

//TODO: extract user class out to configuration
use App\User;
use GeneaLabs\NovaMultiTenantManager\Services\Tenant as TenantService;
use GeneaLabs\NovaMultiTenantManager\Tenant;
use Illuminate\Http\Request;
Expand Down Expand Up @@ -29,13 +27,6 @@ public function show() : Tenant

public function store(Request $request) : Tenant
{
//TODO: extract permission management out to configuration classes to be implemented by user
$superAdmins = (new User)
->with("roles")
->whereHas("roles", function ($query) {
$query->where("name", "SuperAdmin");
})
->get();
$tenancyService = (new TenantService)
->create($request->domain);
$tenant = (new Tenant)->firstOrNew([
Expand All @@ -44,48 +35,6 @@ public function store(Request $request) : Tenant
->fill($request->all());
$tenant->save();

if ($request->filled("adminEmail")) {
$admin = (new User)->firstOrNew([
"email" => $request->adminEmail,
]);
$admin->name = $request->adminName;
$admin->password = str_random(32);
$admin->save();
$admin->roles()->attach("Admin");
}

$superAdmins->each(function ($superAdmin) {
$user = (new User)->firstOrNew([
"email" => $superAdmin->email,
])
->fill([
"name" => $superAdmin->name,
"email_verified_at" => $superAdmin->email_verified_at,
]);
$user->password = $superAdmin->password;
$user
->setConnection("tenant")
->save();
$user->roles()->attach("SuperAdmin");
});

return $tenant;
}

public function update(Request $request, Tenant $tenant) : Tenant
{
$tenant->fill($request->all());
\Log::debug($request->all());
if ($request->hasFile("logo")) {
$tenant->logo = $request->logo->store("media", "tenant");
}

if ($request->hasFile("watermark")) {
$tenant->watermark = $request->watermark->store("media", "tenant");
}

$tenant->save();

return $tenant;
}

Expand Down
44 changes: 44 additions & 0 deletions src/Nova/Alias.php
@@ -0,0 +1,44 @@
<?php

namespace GeneaLabs\NovaMultiTenantManager\Nova;

use Hyn\Tenancy\Models\Hostname;
use Illuminate\Http\Request;
use Laravel\Nova\Fields\Boolean;
use Laravel\Nova\Fields\DateTime;
use Laravel\Nova\Fields\ID;
use Laravel\Nova\Fields\Text;
use Laravel\Nova\Resource as NovaResource;

class Alias extends NovaResource
{
public static $displayInNavigation = false;
public static $model = Hostname::class;
public static $title = 'fqdn';
public static $search = [
'id',
'fqdn',
];

public function authorizedToDelete(Request $request)
{
return false;
}

public function fields(Request $request)
{
return [
ID::make()
->sortable(),
Text::make("Domain", "fqdn"),
Text::make("Redirect To"),
Boolean::make("Force HTTPS", "force_https"),
DateTime::make("Under Maintenance Since"),
];
}

public static function label()
{
return "Alias";
}
}
12 changes: 9 additions & 3 deletions src/Services/Tenant.php
Expand Up @@ -8,6 +8,7 @@
use Hyn\Tenancy\Environment;
use Hyn\Tenancy\Models\Hostname;
use Hyn\Tenancy\Models\Website;
use Illuminate\Support\Str;

class Tenant
{
Expand Down Expand Up @@ -144,7 +145,7 @@ protected function createWebsite(string $domain) : Website
$this->website = new Website;

if (config('tenancy.website.disable-random-id') === true) {
$this->website->uuid = str_slug($domain);
$this->website->uuid = Str::slug($domain);

if (config('tenancy.website.uuid-limit-length-to-32')) {
$this->website->uuid = substr($this->website->uuid, -32);
Expand All @@ -165,9 +166,14 @@ protected function createHostname(string $domain)
->attach($this->hostname, $this->website);
}

protected function switchToTenant()
public function switchToTenant(TenantModel $tenant = null)
{
app(Environment::class)->tenant($this->website);
if ($tenant) {
$tenant->load("website");
$website = $tenant->website;
}

app(Environment::class)->tenant($website ?? $this->website);
}

public function exists(string $domain) : bool
Expand Down

0 comments on commit 8f203a5

Please sign in to comment.