Hosted version - add user rules. (#3653)

* Add users in hosted platform

* Increment num_users when adding a user on enterprised hosted plan

* Fixes for user repo
This commit is contained in:
David Bomba 2020-04-23 08:54:10 +10:00 committed by GitHub
parent ab8b05dd56
commit ffa3550e4a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 10 deletions

View File

@ -43,6 +43,9 @@ class StoreUserRequest extends Request
$rules['email'] = new ValidUserForCompany(); $rules['email'] = new ValidUserForCompany();
} }
if(auth()->user()->company()->account->isFreeHostedClient())
$rules['hosted_users'] = new CanAddUserRule(auth()->user()->company()->account);
return $rules; return $rules;
} }

View File

@ -35,7 +35,7 @@ class CanAddUserRule implements Rule
*/ */
public function passes($attribute, $value) public function passes($attribute, $value)
{ {
return $this->account->num_users < $this->account->pending_num_users;
} }
/** /**
@ -43,7 +43,7 @@ class CanAddUserRule implements Rule
*/ */
public function message() public function message()
{ {
return ctrans('texts.limit_users', ['limit' => 1]); return ctrans('texts.limit_users', ['limit' => $this->account->pending_num_users]);
} }
} }

View File

@ -203,6 +203,14 @@ class Account extends BaseModel
return $this->plan == 'free'; return $this->plan == 'free';
} }
public function isEnterpriseClient()
{
if(!Ninja::isNinja())
return false;
return $this->plan == 'enterprise';
}
public function isTrial() public function isTrial()
{ {
if (! Ninja::isNinja()) { if (! Ninja::isNinja()) {

View File

@ -23,10 +23,6 @@ use Illuminate\Http\Request;
*/ */
class UserRepository extends BaseRepository class UserRepository extends BaseRepository
{ {
public function __construct()
{
}
/** /**
* Gets the class name. * Gets the class name.
* *
@ -60,10 +56,16 @@ class UserRepository extends BaseRepository
} }
$company = auth()->user()->company(); $company = auth()->user()->company();
$account_id = $company->account->id; $account = $company->account;;
/* If hosted and Enterprise we need to increment the num_users field on the accounts table*/
if(!$user->id && $account->isEnterpriseClient()){
$account->num_users++;
$account->save();
}
$user->fill($details); $user->fill($details);
$user->account_id = $account_id; $user->account_id = $account->id;
$user->save(); $user->save();
if (isset($data['company_user'])) { if (isset($data['company_user'])) {
@ -71,7 +73,7 @@ class UserRepository extends BaseRepository
/*No company user exists - attach the user*/ /*No company user exists - attach the user*/
if (!$cu) { if (!$cu) {
$data['company_user']['account_id'] = $account_id; $data['company_user']['account_id'] = $account->id;
$data['company_user']['notifications'] = CompanySettings::notificationDefaults(); $data['company_user']['notifications'] = CompanySettings::notificationDefaults();
$data['company_user']['is_migrating'] = $is_migrating; $data['company_user']['is_migrating'] = $is_migrating;
$user->companies()->attach($company->id, $data['company_user']); $user->companies()->attach($company->id, $data['company_user']);
@ -112,7 +114,6 @@ class UserRepository extends BaseRepository
event(new UserWasDeleted($user, $company)); event(new UserWasDeleted($user, $company));
return $user->fresh(); return $user->fresh();
} }