Enable overriding database Models by the calling application - those models must be in the Slack/ subdir
This commit is contained in:
parent
eb73a67fa8
commit
a7f043b23e
@ -6,10 +6,10 @@ use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Slack\Models\{Channel,Enterprise,Team,User};
|
||||
|
||||
use App\Models\Channel as AppChannel;
|
||||
use App\Models\Enterprise as AppEnterprise;
|
||||
use App\Models\Team as AppTeam;
|
||||
use App\Models\User as AppUser;
|
||||
use App\Models\Slack\Channel as AppChannel;
|
||||
use App\Models\Slack\Enterprise as AppEnterprise;
|
||||
use App\Models\Slack\Team as AppTeam;
|
||||
use App\Models\Slack\User as AppUser;
|
||||
|
||||
/**
|
||||
* Class Base - is a Base to all incoming Slack POST requests
|
||||
|
@ -11,6 +11,10 @@ use Slack\Jobs\TeamUpdate;
|
||||
use Slack\Models\{Enterprise,Team,Token,User};
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Slack\Channel as AppChannel;
|
||||
use App\Models\Slack\Enterprise as AppEnterprise;
|
||||
use App\Models\Slack\Team as AppTeam;
|
||||
use App\Models\Slack\User as AppUser;
|
||||
|
||||
class SlackAppController extends Controller
|
||||
{
|
||||
@ -84,10 +88,8 @@ class SlackAppController extends Controller
|
||||
$eo = NULL;
|
||||
|
||||
if ($output->enterprise) {
|
||||
$eo = Enterprise::firstOrNew(
|
||||
[
|
||||
'enterprise_id'=>$output->enterprise->id
|
||||
]);
|
||||
$eo = (class_exists(AppEnterprise::class) ? new AppEnterprise : new Enterprise)
|
||||
->firstOrNew(['enterprise_id'=>$output->enterprise->id]);
|
||||
|
||||
$eo->name = $output->enterprise->name;
|
||||
$eo->active = TRUE;
|
||||
@ -95,10 +97,8 @@ class SlackAppController extends Controller
|
||||
}
|
||||
|
||||
// Store our team details
|
||||
$so = Team::firstOrNew(
|
||||
[
|
||||
'team_id'=>$output->team->id
|
||||
]);
|
||||
$so = (class_exists(AppTeam::class) ? new AppTeam : new Team)
|
||||
->firstOrNew(['team_id'=>$output->team->id]);
|
||||
|
||||
// We just installed, so we'll make it active, even if it already exists.
|
||||
$so->description = $output->team->name;
|
||||
@ -112,7 +112,7 @@ class SlackAppController extends Controller
|
||||
$to = $so->token;
|
||||
|
||||
if (! $to) {
|
||||
$to = new Token;
|
||||
$to = class_exists(AppToken::class) ? new AppToken : new Token;
|
||||
$to->description = 'App: Oauth';
|
||||
}
|
||||
|
||||
@ -125,10 +125,9 @@ class SlackAppController extends Controller
|
||||
|
||||
// Create the bot user
|
||||
// Store the user who install, and make them admin
|
||||
$bo = User::firstOrNew(
|
||||
[
|
||||
'user_id'=>$output->bot_user_id,
|
||||
]);
|
||||
$bo = (class_exists(AppUser::class) ? new AppUser : new User)
|
||||
->firstOrNew(['user_id'=>$output->bot_user_id]);
|
||||
|
||||
$bo->enterprise_id = $eo ? $eo->id : NULL;
|
||||
$bo->team_id = $so->id;
|
||||
$bo->active = 0;
|
||||
@ -141,10 +140,8 @@ class SlackAppController extends Controller
|
||||
Log::debug(sprintf('%s:BOT Created [%s]',self::LOGKEY,$bo->id),['m'=>__METHOD__]);
|
||||
|
||||
// Store the user who install, and make them admin
|
||||
$uo = User::firstOrNew(
|
||||
[
|
||||
'user_id'=>$output->authed_user->id,
|
||||
]);
|
||||
$uo = (class_exists(AppUser::class) ? new AppUser : new User)
|
||||
->firstOrNew(['user_id'=>$output->authed_user->id]);
|
||||
|
||||
$uo->enterprise_id = $eo ? $eo->id : NULL;
|
||||
$uo->team_id = $eo ? NULL : $so->id;
|
||||
|
@ -2,6 +2,8 @@
|
||||
|
||||
namespace Slack\Models;
|
||||
|
||||
use App\Models\Slack\Team as AppTeam;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Arr;
|
||||
use Slack\Traits\ScopeActive;
|
||||
@ -16,7 +18,7 @@ class Channel extends Model
|
||||
|
||||
public function team()
|
||||
{
|
||||
return $this->belongsTo(Team::class);
|
||||
return $this->belongsTo(class_exists(AppTeam::class) ? AppTeam::class : Team::class);
|
||||
}
|
||||
|
||||
/* ATTRIBUTES */
|
||||
@ -71,4 +73,4 @@ class Channel extends Model
|
||||
|
||||
return sprintf('https://%s/archives/%s/p%s',$this->team->url,$this->channel_id,str_replace('.','',$ts));
|
||||
}
|
||||
}
|
||||
}
|
@ -2,6 +2,8 @@
|
||||
|
||||
namespace Slack\Models;
|
||||
|
||||
use App\Models\Slack\Team as AppTeam;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Slack\Traits\ScopeActive;
|
||||
|
||||
@ -15,6 +17,6 @@ class Enterprise extends Model
|
||||
|
||||
public function teams()
|
||||
{
|
||||
return $this->hasMany(Team::class);
|
||||
return $this->hasMany(class_exists(AppTeam::class) ? AppTeam::class : Team::class);
|
||||
}
|
||||
}
|
||||
}
|
@ -2,6 +2,10 @@
|
||||
|
||||
namespace Slack\Models;
|
||||
|
||||
use App\Models\Slack\Channel as AppChannel;
|
||||
use App\Models\Slack\Token as AppToken;
|
||||
use App\Models\Slack\User as AppUser;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Slack\API;
|
||||
use Slack\Traits\ScopeActive;
|
||||
@ -16,34 +20,34 @@ class Team extends Model
|
||||
|
||||
public function admins()
|
||||
{
|
||||
return $this->hasMany(User::class,'team_id','id')->where('admin','=',TRUE);
|
||||
return $this->hasMany(class_exists(AppUser::class) ? AppUser::class : User::class,'team_id','id')->where('admin','=',TRUE);
|
||||
}
|
||||
|
||||
public function bot()
|
||||
{
|
||||
return $this->hasOne(User::class,'id','bot_id');
|
||||
return $this->hasOne(class_exists(AppUser::class) ? AppUser::class : User::class,'id','bot_id');
|
||||
}
|
||||
|
||||
public function channels()
|
||||
{
|
||||
return $this->hasMany(Channel::class);
|
||||
return $this->hasMany(class_exists(AppChannel::class) ? AppChannel::class : Channel::class);
|
||||
}
|
||||
|
||||
public function owner()
|
||||
{
|
||||
return $this->belongsTo(User::class,'admin_id');
|
||||
return $this->belongsTo(class_exists(AppUser::class) ? AppUser::class : User::class,'admin_id');
|
||||
}
|
||||
|
||||
// Tokens applicable to this team
|
||||
// @todo team_id can now be null, so we need to get it from the enterprise_id.
|
||||
public function token()
|
||||
{
|
||||
return $this->hasOne(Token::class);
|
||||
return $this->hasOne(class_exists(AppToken::class) ? AppToken::class : Token::class);
|
||||
}
|
||||
|
||||
public function users()
|
||||
{
|
||||
return $this->hasMany(User::class);
|
||||
return $this->hasMany(class_exists(AppUser::class) ? AppUser::class : User::class);
|
||||
}
|
||||
|
||||
/* ATTRIBUTES */
|
||||
@ -92,4 +96,4 @@ class Team extends Model
|
||||
{
|
||||
return new API($this);
|
||||
}
|
||||
}
|
||||
}
|
@ -2,6 +2,8 @@
|
||||
|
||||
namespace Slack\Models;
|
||||
|
||||
use App\Models\Slack\Team as AppTeam;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Collection;
|
||||
use Slack\Traits\ScopeActive;
|
||||
@ -14,7 +16,7 @@ class Token extends Model
|
||||
|
||||
public function team()
|
||||
{
|
||||
return $this->belongsTo(Team::class);
|
||||
return $this->belongsTo(class_exists(AppTeam::class) ? AppTeam::class : Team::class);
|
||||
}
|
||||
|
||||
/* ATTRIBUTES */
|
||||
@ -41,4 +43,4 @@ class Token extends Model
|
||||
{
|
||||
return ($scope AND ($this->getScopesAttribute()->search($scope) !== FALSE));
|
||||
}
|
||||
}
|
||||
}
|
@ -2,6 +2,9 @@
|
||||
|
||||
namespace Slack\Models;
|
||||
|
||||
use App\Models\Slack\Enterprise as AppEnterprise;
|
||||
use App\Models\Slack\Team as AppTeam;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Slack\Traits\ScopeActive;
|
||||
@ -18,12 +21,12 @@ class User extends Model
|
||||
|
||||
public function enterprise()
|
||||
{
|
||||
return $this->belongsTo(Enterprise::class);
|
||||
return $this->belongsTo(class_exists(AppEnterprise::class) ? AppEnterprise::class : Enterprise::class);
|
||||
}
|
||||
|
||||
public function team()
|
||||
{
|
||||
return $this->belongsTo(Team::class);
|
||||
return $this->belongsTo(class_exists(AppTeam::class) ? AppTeam::class : Team::class);
|
||||
}
|
||||
|
||||
/* ATTRIBUTES */
|
||||
|
@ -8,5 +8,5 @@ return [
|
||||
'register_notification' => env('SLACK_REGISTER_NOTIFICATION',TRUE),
|
||||
|
||||
// Our routes that we dont check for signatures
|
||||
'bypass_routes' => ['/','slack-install-button','slack-install'],
|
||||
'bypass_routes' => ['slack','slack/install','slack/install/button'],
|
||||
];
|
||||
|
@ -6,17 +6,17 @@ $routeConfig = [
|
||||
|
||||
app('router')
|
||||
->group($routeConfig, function ($router) {
|
||||
$router->get('slack-install-button', [
|
||||
$router->get('slack/install/button', [
|
||||
'uses' => 'SlackAppController@button',
|
||||
'as' => 'slack-install-button',
|
||||
]);
|
||||
|
||||
$router->get('slack-install', [
|
||||
$router->get('slack/install', [
|
||||
'uses' => 'SlackAppController@install',
|
||||
'as' => 'slack-install',
|
||||
]);
|
||||
|
||||
$router->get('', [
|
||||
$router->get('slack', [
|
||||
'uses' => 'SlackAppController@home',
|
||||
'as' => 'home',
|
||||
]);
|
||||
@ -24,18 +24,18 @@ app('router')
|
||||
|
||||
app('router')
|
||||
->group(array_merge($routeConfig,['prefix'=>'api']), function ($router) {
|
||||
$router->post('event', [
|
||||
$router->post('slack/event', [
|
||||
'uses' => 'EventsController@fire',
|
||||
'as' => 'event',
|
||||
]);
|
||||
|
||||
$router->post('imsg', [
|
||||
$router->post('slack/imsg', [
|
||||
'uses' => 'InteractiveMessageController@fire',
|
||||
'as' => 'imsg',
|
||||
]);
|
||||
|
||||
$router->post('imsgopt', [
|
||||
$router->post('slack/imsgopt', [
|
||||
'uses' => 'InteractiveOptionsController@fire',
|
||||
'as' => 'imsgopt',
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user