Skip to content

Commit

Permalink
Merge pull request #2 from jonasdt/improvements
Browse files Browse the repository at this point in the history
Improvements
leventogut authored Oct 6, 2016
2 parents 21f2a6f + 1be5a57 commit 52cbf1f
Showing 6 changed files with 38 additions and 28 deletions.
9 changes: 9 additions & 0 deletions config/mailium-oauth.php
Original file line number Diff line number Diff line change
@@ -9,6 +9,7 @@
| App credentails
*/

'app_id' => env('MAILIUM_APP_ID', ''),
'client_id' => env('MAILIUM_APP_CLIENT_ID', ''),
'client_secret' => env('MAILIUM_APP_CLIENT_SECRET', ''),

@@ -35,4 +36,12 @@
|
*/
'app_type' => env('MAILIUM_APP_TYPE', 'embedded'),

/*
|--------------------------------------------------------------------------
| Eloquent model
|--------------------------------------------------------------------------
|
*/
'model' => \MailiumOauthClient\MailiumOauthClientLaravel\MailiumAppAuthenticatable::class,
];
14 changes: 8 additions & 6 deletions http/routes.php
Original file line number Diff line number Diff line change
@@ -2,7 +2,7 @@

use Illuminate\Http\Request;
use MailiumOauthClient\MailiumOauthClientLaravel\MailiumAppUninstallEvent;
use MailiumOauthClient\MailiumOauthClientLaravel\MailiumAppUser;
use MailiumOauthClient\MailiumOauthClientLaravel\MailiumAppAuthenticatable;
use MailiumOauthClient\MailiumOauthClientLaravel\MailiumOauthClientMiddleware;

Route::post('/uninstall', ['middleware' => [
@@ -12,14 +12,16 @@
\MailiumOauthClient\MailiumOauthClientLaravel\MailiumOauthClientMiddleware::class
], function(Request $request) {
// Get current user from the request
/** @var MailiumAppUser $user */
/** @var MailiumAppAuthenticatable $user */
$user = $request->attributes->get('mailium_app_user');

// Delete user from database;
$user->delete();

// Fire uninstall event
Event::fire(new MailiumAppUninstallEvent($user->accid));
Event::fire(new MailiumAppUninstallEvent($user));

// Delete user from database;
if ($user->exists) {
$user->delete();
}

return response()->json([], 200);
}])->name('mailium_app_uninstall');
Original file line number Diff line number Diff line change
@@ -3,12 +3,12 @@
use Illuminate\Database\Eloquent\Model;

/**
* Class MailiumAppUser
* Class MailiumAppAuthenticatable
* @package MailiumOauthClient\MailiumOauthClientLaravel
* @property string $accid
* @property array $oauth_tokens
*/
class MailiumAppUser extends Model
class MailiumAppAuthenticatable extends Model
{

# ---------------------------------------------------------------------------------------------- Eloquent Attributes
@@ -19,14 +19,6 @@ class MailiumAppUser extends Model
*/
protected $table = 'mailium_app_users';

/**
* The database columns used by the model.
*
* @var array
*/
protected $columns = ['id', 'accid', 'oauth_tokens', 'created_at', 'updated_at'];


/**
* The attributes that are mass assignable.
*
@@ -79,7 +71,7 @@ public static function createUser($accId)
{
$appUser = static::getByAccId($accId);
if (is_null($appUser)) {
$appUser = new MailiumAppUser();
$appUser = new static();
$appUser->accid = $accId;
$appUser->oauth_tokens = new \stdClass();
$appUser->save();
@@ -110,7 +102,7 @@ public static function saveOauthToken($resourceOwner, $oauthTokens)
{
$appUser = static::getByAccId($resourceOwner->acc_id);
if (is_null($appUser)) {
$appUser = new MailiumAppUser();
$appUser = new static();
$appUser->accid = $resourceOwner->acc_id;
}
$appUser->oauth_tokens = $oauthTokens;
Original file line number Diff line number Diff line change
@@ -5,13 +5,13 @@
class MailiumAppUninstallEvent
{
/**
* @var string ID of the account that the app is uninstalled from
* @var MailiumAppAuthenticatable the account that the app is uninstalled from
*/
public $account;

/**
* MailiumAppUninstallEvent constructor.
* @param string $account
* @param MailiumAppAuthenticatable $account
*/
public function __construct($account)
{
Original file line number Diff line number Diff line change
@@ -2,11 +2,10 @@

use Closure;
use Illuminate\Http\Request;
use Auth;
use MailiumOauthClient\MailiumOauthClient;
use MailiumOauthClient\MailiumOauthClientLaravel;
use MailiumOauthClient\MailiumOauthClientLaravel\MailiumAppUser;
use Mailium\API\MailiumAPI3;

class MailiumOauthClientMiddleware
{
const VERSION = '1.0.30';
@@ -16,7 +15,14 @@ class MailiumOauthClientMiddleware
protected $mailiumOauthClient;

/**
* @var \MailiumOauthClient\MailiumOauthClientLaravel\MailiumAppUser
* The Eloquent user model.
*
* @var string
*/
protected $model;

/**
* @var \MailiumOauthClient\MailiumOauthClientLaravel\MailiumAppAuthenticatable
*/
protected $user;

@@ -36,6 +42,8 @@ public function __construct(MailiumOauthClient $mailiumOauthClient)
{
$this->mailiumOauthClient = $mailiumOauthClient;

$this->model = config('mailium-oauth.model');

$this->request = new \stdClass();

$this->session = new \stdClass();
@@ -86,7 +94,7 @@ public function handle(Request $request, Closure $next)
if ($this->request->authorizationState == $this->session->authorizationState) {
// Get access token
$this->mailiumOauthClient->authorize($this->request->authorizationCode);
$this->user = MailiumAppUser::getByAccId($this->request->accId);
$this->user = call_user_func([$this->model, 'getByAccId'], $this->request->accId);

$this->mailium_app_just_installed = true;
$request->session()->forget('mailium_authorization_state');
@@ -143,11 +151,11 @@ public function handle(Request $request, Closure $next)

protected function setUser($accId)
{
$this->user = MailiumAppUser::getByAccId($accId);
$this->user = call_user_func([$this->model, 'getByAccId'], $accId);
if ($this->user) {
$this->mailiumOauthClient->setToken($this->user->getOauthTokens());
} else {
$this->user = MailiumAppUser::createUser($accId);
$this->user = call_user_func([$this->model, 'createUser'], $accId);
}
return $this->user;
}
Original file line number Diff line number Diff line change
@@ -3,7 +3,6 @@
use Illuminate\Foundation\Application as LaravelApplication;
use Illuminate\Support\ServiceProvider;
use MailiumOauthClient\MailiumOauthClient;
use MailiumOauthClient\MailiumOauthClientLaravel\MailiumAppUser;


class MailiumOauthClientServiceProvider extends ServiceProvider
@@ -46,7 +45,7 @@ public function register()
$oauthClient->setClientID(config('mailium-oauth.client_id'));
$oauthClient->setClientSecret(config('mailium-oauth.client_secret'));
$oauthClient->setScopes(config('mailium-oauth.required_scopes'));
$oauthClient->setTokenStoreCallbackFunction('MailiumOauthClient\MailiumOauthClientLaravel\MailiumAppUser::saveOauthToken');
$oauthClient->setTokenStoreCallbackFunction(config('mailium-oauth.model') . '::saveOauthToken');
$oauthClient->setRedirectUri(config('mailium-oauth.redirect_uri'));
$oauthClient->setAppType(config('mailium-oauth.app_type'));

0 comments on commit 52cbf1f

Please sign in to comment.