mirror of
https://github.com/pterodactyl/panel.git
synced 2024-11-26 02:52:30 +01:00
Fix up email sending and add more notifications to the panel.
Closes #265
This commit is contained in:
parent
95171a3e41
commit
008cccb098
@ -8,12 +8,16 @@ This project follows [Semantic Versioning](http://semver.org) guidelines.
|
|||||||
* `[pre.2]` — Fixes bug where servers could not be manually deployed to nodes due to a broken SQL call.
|
* `[pre.2]` — Fixes bug where servers could not be manually deployed to nodes due to a broken SQL call.
|
||||||
* `[pre.2]` — Fixes inability to edit a server due to owner_id issues.
|
* `[pre.2]` — Fixes inability to edit a server due to owner_id issues.
|
||||||
* `[pre.2]` — Fixes bug when trying to add new subusers.
|
* `[pre.2]` — Fixes bug when trying to add new subusers.
|
||||||
|
* Emails sending with 'Pterodactyl Panel' as the from name. Now configurable by using `php artisan pterodactyl:mail` to update.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
* `[pre.2]` — File Manager now displays relevant information on all screen sizes, and includes better button clicking mechanics for dropdown menu.
|
* `[pre.2]` — File Manager now displays relevant information on all screen sizes, and includes better button clicking mechanics for dropdown menu.
|
||||||
* Reduced the number of database queries being executed when viewing a specific server. This is done by caching the query for up to 60 minutes in memcached.
|
* Reduced the number of database queries being executed when viewing a specific server. This is done by caching the query for up to 60 minutes in memcached.
|
||||||
* User creation emails include more information and are sent by the event listener rather than the repository.
|
* User creation emails include more information and are sent by the event listener rather than the repository.
|
||||||
|
|
||||||
|
### Added
|
||||||
|
* Notifications when a user is added or removed as a subuser for a server.
|
||||||
|
|
||||||
## v0.6.0-pre.2 (Courageous Carniadactylus)
|
## v0.6.0-pre.2 (Courageous Carniadactylus)
|
||||||
### Fixed
|
### Fixed
|
||||||
* `[pre.1]` — Fixes bug with database seeders that prevented correctly installing the panel.
|
* `[pre.1]` — Fixes bug with database seeders that prevented correctly installing the panel.
|
||||||
|
@ -36,6 +36,7 @@ class UpdateEmailSettings extends Command
|
|||||||
protected $signature = 'pterodactyl:mail
|
protected $signature = 'pterodactyl:mail
|
||||||
{--driver=}
|
{--driver=}
|
||||||
{--email=}
|
{--email=}
|
||||||
|
{--from-name=}
|
||||||
{--host=}
|
{--host=}
|
||||||
{--port=}
|
{--port=}
|
||||||
{--username=}
|
{--username=}
|
||||||
@ -137,6 +138,7 @@ class UpdateEmailSettings extends Command
|
|||||||
}
|
}
|
||||||
|
|
||||||
$variables['MAIL_FROM'] = is_null($this->option('email')) ? $this->ask('Email address emails should originate from') : $this->option('email');
|
$variables['MAIL_FROM'] = is_null($this->option('email')) ? $this->ask('Email address emails should originate from') : $this->option('email');
|
||||||
|
$variables['MAIL_FROM_NAME'] = is_null($this->option('from-name')) ? $this->ask('Name emails should appear to be from') : $this->option('from-name');
|
||||||
$variables['MAIL_ENCRYPTION'] = 'tls';
|
$variables['MAIL_ENCRYPTION'] = 'tls';
|
||||||
|
|
||||||
$bar = $this->output->createProgressBar(count($variables));
|
$bar = $this->output->createProgressBar(count($variables));
|
||||||
|
45
app/Events/Subuser/Created.php
Normal file
45
app/Events/Subuser/Created.php
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Pterodactyl - Panel
|
||||||
|
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Pterodactyl\Events\Subuser;
|
||||||
|
|
||||||
|
use Pterodactyl\Models\Subuser;
|
||||||
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
|
class Created
|
||||||
|
{
|
||||||
|
use SerializesModels;
|
||||||
|
|
||||||
|
public $subuser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new event instance.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct(Subuser $subuser)
|
||||||
|
{
|
||||||
|
$this->subuser = $subuser;
|
||||||
|
}
|
||||||
|
}
|
45
app/Events/Subuser/Creating.php
Normal file
45
app/Events/Subuser/Creating.php
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Pterodactyl - Panel
|
||||||
|
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Pterodactyl\Events\Subuser;
|
||||||
|
|
||||||
|
use Pterodactyl\Models\Subuser;
|
||||||
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
|
class Creating
|
||||||
|
{
|
||||||
|
use SerializesModels;
|
||||||
|
|
||||||
|
public $subuser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new event instance.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct(Subuser $subuser)
|
||||||
|
{
|
||||||
|
$this->subuser = $subuser;
|
||||||
|
}
|
||||||
|
}
|
45
app/Events/Subuser/Deleted.php
Normal file
45
app/Events/Subuser/Deleted.php
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Pterodactyl - Panel
|
||||||
|
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Pterodactyl\Events\Subuser;
|
||||||
|
|
||||||
|
use Pterodactyl\Models\Subuser;
|
||||||
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
|
class Deleted
|
||||||
|
{
|
||||||
|
use SerializesModels;
|
||||||
|
|
||||||
|
public $subuser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new event instance.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct(Subuser $subuser)
|
||||||
|
{
|
||||||
|
$this->subuser = $subuser;
|
||||||
|
}
|
||||||
|
}
|
45
app/Events/Subuser/Deleting.php
Normal file
45
app/Events/Subuser/Deleting.php
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Pterodactyl - Panel
|
||||||
|
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Pterodactyl\Events\Subuser;
|
||||||
|
|
||||||
|
use Pterodactyl\Models\Subuser;
|
||||||
|
use Illuminate\Queue\SerializesModels;
|
||||||
|
|
||||||
|
class Deleting
|
||||||
|
{
|
||||||
|
use SerializesModels;
|
||||||
|
|
||||||
|
public $subuser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new event instance.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct(Subuser $subuser)
|
||||||
|
{
|
||||||
|
$this->subuser = $subuser;
|
||||||
|
}
|
||||||
|
}
|
@ -129,6 +129,7 @@ class ServerRoutes
|
|||||||
]);
|
]);
|
||||||
|
|
||||||
$router->delete('users/delete/{id}', [
|
$router->delete('users/delete/{id}', [
|
||||||
|
'as' => 'server.subusers.delete',
|
||||||
'uses' => 'Server\SubuserController@deleteSubuser',
|
'uses' => 'Server\SubuserController@deleteSubuser',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@ -85,25 +85,6 @@ class Server extends Model
|
|||||||
'installed' => 'integer',
|
'installed' => 'integer',
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
protected static $serverUUIDInstance = [];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @var mixed
|
|
||||||
*/
|
|
||||||
protected static $user;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor.
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct();
|
|
||||||
self::$user = Auth::user();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a single server specified by UUID.
|
* Returns a single server specified by UUID.
|
||||||
* DO NOT USE THIS TO MODIFY SERVER DETAILS OR SAVE THOSE DETAILS.
|
* DO NOT USE THIS TO MODIFY SERVER DETAILS OR SAVE THOSE DETAILS.
|
||||||
|
@ -25,9 +25,12 @@
|
|||||||
namespace Pterodactyl\Models;
|
namespace Pterodactyl\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Notifications\Notifiable;
|
||||||
|
|
||||||
class Subuser extends Model
|
class Subuser extends Model
|
||||||
{
|
{
|
||||||
|
use Notifiable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The table associated with the model.
|
* The table associated with the model.
|
||||||
*
|
*
|
||||||
|
@ -47,7 +47,7 @@ class AccountCreated extends Notification implements ShouldQueue
|
|||||||
*/
|
*/
|
||||||
public function __construct(array $user)
|
public function __construct(array $user)
|
||||||
{
|
{
|
||||||
$this->user = $user;
|
$this->user = (object) $user;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
74
app/Notifications/AddedToServer.php
Normal file
74
app/Notifications/AddedToServer.php
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Pterodactyl - Panel
|
||||||
|
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Pterodactyl\Notifications;
|
||||||
|
|
||||||
|
use Illuminate\Bus\Queueable;
|
||||||
|
use Illuminate\Notifications\Notification;
|
||||||
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
|
use Illuminate\Notifications\Messages\MailMessage;
|
||||||
|
|
||||||
|
class AddedToServer extends Notification implements ShouldQueue
|
||||||
|
{
|
||||||
|
use Queueable;
|
||||||
|
|
||||||
|
public $server;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new notification instance.
|
||||||
|
*
|
||||||
|
* @param array $server
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct(array $server)
|
||||||
|
{
|
||||||
|
$this->server = (object) $server;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the notification's delivery channels.
|
||||||
|
*
|
||||||
|
* @param mixed $notifiable
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function via($notifiable)
|
||||||
|
{
|
||||||
|
return ['mail'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the mail representation of the notification.
|
||||||
|
*
|
||||||
|
* @param mixed $notifiable
|
||||||
|
* @return \Illuminate\Notifications\Messages\MailMessage
|
||||||
|
*/
|
||||||
|
public function toMail($notifiable)
|
||||||
|
{
|
||||||
|
return (new MailMessage)
|
||||||
|
->greeting('Hello ' . $this->server->user . '!')
|
||||||
|
->line('You have been added as a subuser for the following server, allowing you certain control over the server.')
|
||||||
|
->line('Server Name: ' . $this->server->name)
|
||||||
|
->action('Visit Server', route('server.index', $this->server->uuidShort));
|
||||||
|
}
|
||||||
|
}
|
75
app/Notifications/RemovedFromServer.php
Normal file
75
app/Notifications/RemovedFromServer.php
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Pterodactyl - Panel
|
||||||
|
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Pterodactyl\Notifications;
|
||||||
|
|
||||||
|
use Illuminate\Bus\Queueable;
|
||||||
|
use Illuminate\Notifications\Notification;
|
||||||
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
|
use Illuminate\Notifications\Messages\MailMessage;
|
||||||
|
|
||||||
|
class RemovedFromServer extends Notification implements ShouldQueue
|
||||||
|
{
|
||||||
|
use Queueable;
|
||||||
|
|
||||||
|
public $server;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new notification instance.
|
||||||
|
*
|
||||||
|
* @param array $server
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct(array $server)
|
||||||
|
{
|
||||||
|
$this->server = (object) $server;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the notification's delivery channels.
|
||||||
|
*
|
||||||
|
* @param mixed $notifiable
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function via($notifiable)
|
||||||
|
{
|
||||||
|
return ['mail'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the mail representation of the notification.
|
||||||
|
*
|
||||||
|
* @param mixed $notifiable
|
||||||
|
* @return \Illuminate\Notifications\Messages\MailMessage
|
||||||
|
*/
|
||||||
|
public function toMail($notifiable)
|
||||||
|
{
|
||||||
|
return (new MailMessage)
|
||||||
|
->error()
|
||||||
|
->greeting('Hello ' . $this->server->user . '.')
|
||||||
|
->line('You have been removed as a subuser for the following server.')
|
||||||
|
->line('Server Name: ' . $this->server->name)
|
||||||
|
->action('Visit Panel', route('index'));
|
||||||
|
}
|
||||||
|
}
|
88
app/Observers/SubuserObserver.php
Normal file
88
app/Observers/SubuserObserver.php
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Pterodactyl - Panel
|
||||||
|
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
* of this software and associated documentation files (the "Software"), to deal
|
||||||
|
* in the Software without restriction, including without limitation the rights
|
||||||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
* copies of the Software, and to permit persons to whom the Software is
|
||||||
|
* furnished to do so, subject to the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice shall be included in all
|
||||||
|
* copies or substantial portions of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
* SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Pterodactyl\Observers;
|
||||||
|
|
||||||
|
use Pterodactyl\Events;
|
||||||
|
use Pterodactyl\Models\Subuser;
|
||||||
|
use Pterodactyl\Notifications\AddedToServer;
|
||||||
|
use Pterodactyl\Notifications\RemovedFromServer;
|
||||||
|
|
||||||
|
class SubuserObserver
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Listen to the Subuser creating event.
|
||||||
|
*
|
||||||
|
* @param Subuser $subuser The eloquent Subuser model.
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function creating(Subuser $subuser)
|
||||||
|
{
|
||||||
|
event(new Events\Subuser\Creating($subuser));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Listen to the Subuser created event.
|
||||||
|
*
|
||||||
|
* @param Subuser $subuser The eloquent Subuser model.
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function created(Subuser $subuser)
|
||||||
|
{
|
||||||
|
event(new Events\Subuser\Created($subuser));
|
||||||
|
|
||||||
|
$subuser->user->notify((new AddedToServer([
|
||||||
|
'user' => $subuser->user->name_first,
|
||||||
|
'name' => $subuser->server->name,
|
||||||
|
'uuidShort' => $subuser->server->uuidShort,
|
||||||
|
])));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Listen to the Subuser deleting event.
|
||||||
|
*
|
||||||
|
* @param Subuser $subuser The eloquent Subuser model.
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function deleting(Subuser $subuser)
|
||||||
|
{
|
||||||
|
event(new Events\Subuser\Deleting($subuser));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Listen to the Subuser deleted event.
|
||||||
|
*
|
||||||
|
* @param Subuser $subuser The eloquent Subuser model.
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function deleted(Subuser $subuser)
|
||||||
|
{
|
||||||
|
event(new Events\Subuser\Deleted($subuser));
|
||||||
|
|
||||||
|
$subuser->user->notify((new RemovedFromServer([
|
||||||
|
'user' => $subuser->user->name_first,
|
||||||
|
'name' => $subuser->server->name,
|
||||||
|
])));
|
||||||
|
}
|
||||||
|
}
|
@ -26,6 +26,7 @@ namespace Pterodactyl\Observers;
|
|||||||
|
|
||||||
use Pterodactyl\Events;
|
use Pterodactyl\Events;
|
||||||
use Pterodactyl\Models\User;
|
use Pterodactyl\Models\User;
|
||||||
|
use Pterodactyl\Notifications\AccountCreated;
|
||||||
|
|
||||||
class UserObserver
|
class UserObserver
|
||||||
{
|
{
|
||||||
|
@ -24,11 +24,9 @@
|
|||||||
|
|
||||||
namespace Pterodactyl\Providers;
|
namespace Pterodactyl\Providers;
|
||||||
|
|
||||||
use Pterodactyl\Models\User;
|
use Pterodactyl\Models;
|
||||||
use Pterodactyl\Models\Server;
|
use Pterodactyl\Observers;
|
||||||
use Illuminate\Support\ServiceProvider;
|
use Illuminate\Support\ServiceProvider;
|
||||||
use Pterodactyl\Observers\UserObserver;
|
|
||||||
use Pterodactyl\Observers\ServerObserver;
|
|
||||||
|
|
||||||
class AppServiceProvider extends ServiceProvider
|
class AppServiceProvider extends ServiceProvider
|
||||||
{
|
{
|
||||||
@ -39,8 +37,9 @@ class AppServiceProvider extends ServiceProvider
|
|||||||
*/
|
*/
|
||||||
public function boot()
|
public function boot()
|
||||||
{
|
{
|
||||||
User::observe(UserObserver::class);
|
Models\User::observe(Observers\UserObserver::class);
|
||||||
Server::observe(ServerObserver::class);
|
Models\Server::observe(Observers\ServerObserver::class);
|
||||||
|
Models\Subuser::observe(Observers\SubuserObserver::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -54,7 +54,10 @@ return [
|
|||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'from' => ['address' => env('MAIL_FROM'), 'name' => env('MAIL_FROM_NAME', 'Pterodactyl Panel')],
|
'from' => [
|
||||||
|
'address' => env('MAIL_FROM'),
|
||||||
|
'name' => env('MAIL_FROM_NAME', 'Pterodactyl Panel'),
|
||||||
|
],
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
File diff suppressed because one or more lines are too long
@ -96,4 +96,51 @@
|
|||||||
@section('footer-scripts')
|
@section('footer-scripts')
|
||||||
@parent
|
@parent
|
||||||
{!! Theme::js('js/frontend/server.socket.js') !!}
|
{!! Theme::js('js/frontend/server.socket.js') !!}
|
||||||
|
<script>
|
||||||
|
$(document).ready(function () {
|
||||||
|
$('[data-action="delete"]').click(function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
var self = $(this);
|
||||||
|
swal({
|
||||||
|
type: 'warning',
|
||||||
|
title: 'Delete Subuser',
|
||||||
|
text: 'This will immediately remove this user from this server and revoke all permissions.',
|
||||||
|
showCancelButton: true,
|
||||||
|
showConfirmButton: true,
|
||||||
|
closeOnConfirm: false,
|
||||||
|
showLoaderOnConfirm: true
|
||||||
|
}, function () {
|
||||||
|
$.ajax({
|
||||||
|
method: 'DELETE',
|
||||||
|
url: Router.route('server.subusers.delete', {
|
||||||
|
server: Pterodactyl.server.uuidShort,
|
||||||
|
id: self.data('id'),
|
||||||
|
}),
|
||||||
|
headers: {
|
||||||
|
'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content'),
|
||||||
|
}
|
||||||
|
}).done(function () {
|
||||||
|
self.parent().parent().slideUp();
|
||||||
|
swal({
|
||||||
|
type: 'success',
|
||||||
|
title: '',
|
||||||
|
text: 'Subuser was successfully deleted.'
|
||||||
|
});
|
||||||
|
}).fail(function (jqXHR) {
|
||||||
|
console.error(jqXHR);
|
||||||
|
var error = 'An error occured while trying to process this request.';
|
||||||
|
if (typeof jqXHR.responseJSON !== 'undefined' && typeof jqXHR.responseJSON.error !== 'undefined') {
|
||||||
|
error = jqXHR.responseJSON.error;
|
||||||
|
}
|
||||||
|
swal({
|
||||||
|
type: 'error',
|
||||||
|
title: 'Whoops!',
|
||||||
|
text: error
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
@endsection
|
@endsection
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
{{-- Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com> --}}
|
|
||||||
|
|
||||||
{{-- Permission is hereby granted, free of charge, to any person obtaining a copy --}}
|
|
||||||
{{-- of this software and associated documentation files (the "Software"), to deal --}}
|
|
||||||
{{-- in the Software without restriction, including without limitation the rights --}}
|
|
||||||
{{-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --}}
|
|
||||||
{{-- copies of the Software, and to permit persons to whom the Software is --}}
|
|
||||||
{{-- furnished to do so, subject to the following conditions: --}}
|
|
||||||
|
|
||||||
{{-- The above copyright notice and this permission notice shall be included in all --}}
|
|
||||||
{{-- copies or substantial portions of the Software. --}}
|
|
||||||
|
|
||||||
{{-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --}}
|
|
||||||
{{-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --}}
|
|
||||||
{{-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --}}
|
|
||||||
{{-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --}}
|
|
||||||
{{-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --}}
|
|
||||||
{{-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE --}}
|
|
||||||
{{-- SOFTWARE. --}}
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Pterodactyl - You've been added to a Server</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<center><h1>Pterodactyl - Added to Server</h1></center>
|
|
||||||
<p>You are recieving this email because you have been added as a subuser for <a href="{{ $url }}">{{ $serverName }}</a> on Pterodactyl Panel.</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,31 +0,0 @@
|
|||||||
{{-- Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com> --}}
|
|
||||||
|
|
||||||
{{-- Permission is hereby granted, free of charge, to any person obtaining a copy --}}
|
|
||||||
{{-- of this software and associated documentation files (the "Software"), to deal --}}
|
|
||||||
{{-- in the Software without restriction, including without limitation the rights --}}
|
|
||||||
{{-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --}}
|
|
||||||
{{-- copies of the Software, and to permit persons to whom the Software is --}}
|
|
||||||
{{-- furnished to do so, subject to the following conditions: --}}
|
|
||||||
|
|
||||||
{{-- The above copyright notice and this permission notice shall be included in all --}}
|
|
||||||
{{-- copies or substantial portions of the Software. --}}
|
|
||||||
|
|
||||||
{{-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --}}
|
|
||||||
{{-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --}}
|
|
||||||
{{-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --}}
|
|
||||||
{{-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --}}
|
|
||||||
{{-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --}}
|
|
||||||
{{-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE --}}
|
|
||||||
{{-- SOFTWARE. --}}
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Pterodactyl - New Account</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<center><h1>Pterodactyl - Account Created</h1></center>
|
|
||||||
<p>You are recieving this email because an account has been created for you on Pterodactyl Panel.</p>
|
|
||||||
<p>Login: <a href="{{ $login }}">{{ $login }}</a></p>
|
|
||||||
<p>Email: {{ $email }}</p>
|
|
||||||
<p>Forgot your password? <a href="{{ $forgot }}">{{ $forgot }}</a></p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,32 +0,0 @@
|
|||||||
{{-- Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com> --}}
|
|
||||||
|
|
||||||
{{-- Permission is hereby granted, free of charge, to any person obtaining a copy --}}
|
|
||||||
{{-- of this software and associated documentation files (the "Software"), to deal --}}
|
|
||||||
{{-- in the Software without restriction, including without limitation the rights --}}
|
|
||||||
{{-- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell --}}
|
|
||||||
{{-- copies of the Software, and to permit persons to whom the Software is --}}
|
|
||||||
{{-- furnished to do so, subject to the following conditions: --}}
|
|
||||||
|
|
||||||
{{-- The above copyright notice and this permission notice shall be included in all --}}
|
|
||||||
{{-- copies or substantial portions of the Software. --}}
|
|
||||||
|
|
||||||
{{-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR --}}
|
|
||||||
{{-- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, --}}
|
|
||||||
{{-- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE --}}
|
|
||||||
{{-- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER --}}
|
|
||||||
{{-- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, --}}
|
|
||||||
{{-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE --}}
|
|
||||||
{{-- SOFTWARE. --}}
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Pterodactyl - Admin Reset Password</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<center><h1>Pterodactyl - Admin Reset Password</h1></center>
|
|
||||||
<p>Hello there! You are receiving this email because an admin has reset the password on your Pterodactyl account.</p>
|
|
||||||
<p><strong>Login:</strong> <a href="{{ config('app.url') }}/auth/login">{{ config('app.url') }}/auth/login</a><br>
|
|
||||||
<strong>Email:</strong> {{ $user->email }}<br>
|
|
||||||
<strong>Password:</strong> {{ $password }}</p>
|
|
||||||
<p>Thanks,<br>Pterodactyl</p>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -19,4 +19,4 @@ if (! empty($outroLines)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
echo 'Regards,', "\n";
|
echo 'Regards,', "\n";
|
||||||
echo Settings::get('company'), "\n";
|
echo Settings::get('company', 'Pterodactyl Panel'), "\n";
|
||||||
|
@ -71,7 +71,7 @@ $style = [
|
|||||||
<tr>
|
<tr>
|
||||||
<td style="{{ $style['email-masthead'] }}">
|
<td style="{{ $style['email-masthead'] }}">
|
||||||
<a style="{{ $fontFamily }} {{ $style['email-masthead_name'] }}" href="{{ url('/') }}" target="_blank">
|
<a style="{{ $fontFamily }} {{ $style['email-masthead_name'] }}" href="{{ url('/') }}" target="_blank">
|
||||||
{{ Settings::get('company') }}
|
{{ Settings::get('company', 'Pterodactyl Panel') }}
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -176,7 +176,7 @@ $style = [
|
|||||||
<td style="{{ $fontFamily }} {{ $style['email-footer_cell'] }}">
|
<td style="{{ $fontFamily }} {{ $style['email-footer_cell'] }}">
|
||||||
<p style="{{ $style['paragraph-sub'] }}">
|
<p style="{{ $style['paragraph-sub'] }}">
|
||||||
© {{ date('Y') }}
|
© {{ date('Y') }}
|
||||||
<a style="{{ $style['anchor'] }}" href="{{ url('/') }}" target="_blank">{{ Settings::get('company') }}</a>.
|
<a style="{{ $style['anchor'] }}" href="{{ url('/') }}" target="_blank">{{ Settings::get('company', 'Pterodactyl Panel') }}</a>.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
</p>
|
</p>
|
||||||
</td>
|
</td>
|
||||||
|
Loading…
Reference in New Issue
Block a user