Fixes on company CRUD

Change-Id: I7ea8c4f99b4366daf18677654f15f406a479815f
Signed-off-by: smarcet <smarcet@gmail.com>
This commit is contained in:
smarcet 2020-10-01 14:24:50 -03:00
parent 730806c6a0
commit 408e8aefe8
10 changed files with 94 additions and 13 deletions

View File

@ -132,6 +132,7 @@ abstract class AbstractSerializer implements IModelSerializer
const FloatType = 'json_float'; const FloatType = 'json_float';
const ObfuscatedEmailType = 'json_obfuscated_email'; const ObfuscatedEmailType = 'json_obfuscated_email';
const UrlType = 'json_url'; const UrlType = 'json_url';
const ColorType = 'json_color';
const ValidTypes = [ const ValidTypes = [
self::BoolType, self::BoolType,
@ -141,6 +142,7 @@ abstract class AbstractSerializer implements IModelSerializer
self::FloatType, self::FloatType,
self::ObfuscatedEmailType, self::ObfuscatedEmailType,
self::UrlType, self::UrlType,
self::ColorType,
]; ];
/** /**
@ -221,6 +223,11 @@ abstract class AbstractSerializer implements IModelSerializer
$value = JsonUtils::toJsonBoolean($value); $value = JsonUtils::toJsonBoolean($value);
} }
break; break;
case 'json_color':
{
$value = JsonUtils::toJsonColor($value);
}
break;
case 'json_int': case 'json_int':
{ {
$value = JsonUtils::toJsonInt($value); $value = JsonUtils::toJsonInt($value);

View File

@ -69,6 +69,20 @@ abstract class JsonUtils
return boolval($value); return boolval($value);
} }
/**
* @param string $value
* @return bool
*/
public static function toJsonColor($value)
{
if(empty($value))
$value = 'f0f0ee';
if (strpos($value,'#') === false) {
$value = '#'.$value;
}
return $value;
}
/** /**
* @param string $value * @param string $value
* @return int|null * @return int|null

View File

@ -205,4 +205,62 @@ final class OAuth2CompaniesApiController extends OAuth2ProtectedController
} }
} }
/**
* @param LaravelRequest $request
* @param $speaker_id
* @return mixed
*/
public function addCompanyBigLogo(LaravelRequest $request, $company_id)
{
try {
$file = $request->file('file');
if (is_null($file)) {
return $this->error412(array('file param not set!'));
}
$logo = $this->service->addCompanyLogo($company_id, $file);
return $this->created(SerializerRegistry::getInstance()->getSerializer($logo)->serialize());
} catch (EntityNotFoundException $ex1) {
Log::warning($ex1);
return $this->error404();
} catch (ValidationException $ex2) {
Log::warning($ex2);
return $this->error412(array($ex2->getMessage()));
} catch (\HTTP401UnauthorizedException $ex3) {
Log::warning($ex3);
return $this->error401();
} catch (Exception $ex) {
Log::error($ex);
return $this->error500($ex);
}
}
/**
* @param $company_id
* @return \Illuminate\Http\JsonResponse|mixed
*/
public function deleteCompanyBigLogo($company_id){
try {
$this->service->deleteCompanyLogo($company_id);
return $this->deleted();
} catch (EntityNotFoundException $ex1) {
Log::warning($ex1);
return $this->error404();
} catch (ValidationException $ex2) {
Log::warning($ex2);
return $this->error412(array($ex2->getMessage()));
} catch (\HTTP401UnauthorizedException $ex3) {
Log::warning($ex3);
return $this->error401();
} catch (Exception $ex) {
Log::error($ex);
return $this->error500($ex);
}
}
} }

View File

@ -15,6 +15,7 @@
use App\Models\ResourceServer\ApiEndpoint; use App\Models\ResourceServer\ApiEndpoint;
use App\Models\ResourceServer\IApiEndpointRepository; use App\Models\ResourceServer\IApiEndpointRepository;
use Closure; use Closure;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Response; use Illuminate\Support\Facades\Response;
use libs\utils\RequestUtils; use libs\utils\RequestUtils;
use models\main\IMemberRepository; use models\main\IMemberRepository;
@ -77,6 +78,9 @@ final class UserAuthEndpoint
$required_groups = $endpoint->getAuthzGroups(); $required_groups = $endpoint->getAuthzGroups();
foreach ($required_groups as $required_group) { foreach ($required_groups as $required_group) {
Log::debug(sprintf("UserAuthEndpoint::handle route %s method %s member %s (%s) required group %s",
$route, $method, $current_member->getId(), $current_member->getEmail(), $required_group->getSlug()));
if($current_member->isOnGroup($required_group->getSlug())) if($current_member->isOnGroup($required_group->getSlug()))
return $next($request); return $next($request);
} }

View File

@ -73,7 +73,7 @@ Route::group([
Route::get('', 'OAuth2CompaniesApiController@getAllCompanies'); Route::get('', 'OAuth2CompaniesApiController@getAllCompanies');
Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@add']); Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@add']);
Route::group(['prefix'=>'{id}'], function(){ Route::group(['prefix'=>'{id}'], function(){
Route::get('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@get']); Route::get('', [ 'uses' => 'OAuth2CompaniesApiController@get']);
Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@update']); Route::put('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@update']);
Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@delete']); Route::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@delete']);
Route::group(['prefix'=>'logo'], function(){ Route::group(['prefix'=>'logo'], function(){

View File

@ -59,6 +59,7 @@ abstract class AbstractEmailJob implements ShouldQueue
public function __construct(array $payload, ?string $template_identifier, string $to_email, ?string $subject = null) public function __construct(array $payload, ?string $template_identifier, string $to_email, ?string $subject = null)
{ {
$this->template_identifier = $template_identifier; $this->template_identifier = $template_identifier;
Log::debug(sprintf("AbstractEmailJob::__construct template_identifier %s", $template_identifier));
if(empty($this->template_identifier)){ if(empty($this->template_identifier)){
throw new \InvalidArgumentException("missing template_identifier value"); throw new \InvalidArgumentException("missing template_identifier value");
} }

View File

@ -12,6 +12,7 @@
* limitations under the License. * limitations under the License.
**/ **/
use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Log;
use models\summit\SummitOrder; use models\summit\SummitOrder;
use models\summit\SummitRegistrationDiscountCode; use models\summit\SummitRegistrationDiscountCode;
/** /**
@ -110,7 +111,7 @@ class RegisteredMemberOrderPaidMail extends AbstractEmailJob
$payload['tickets'] = $tickets; $payload['tickets'] = $tickets;
$template_identifier = $this->getEmailTemplateIdentifierFromEmailEvent($summit); $template_identifier = $this->getEmailTemplateIdentifierFromEmailEvent($summit);
Log::debug(sprintf("RegisteredMemberOrderPaidMail::__construct template_identifier %s", $template_identifier));
parent::__construct($payload, $template_identifier, $owner_email); parent::__construct($payload, $template_identifier, $owner_email);
} }

View File

@ -12,6 +12,7 @@
* limitations under the License. * limitations under the License.
**/ **/
use Illuminate\Support\Facades\Config; use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Log;
use models\summit\SummitOrder; use models\summit\SummitOrder;
/** /**
* Class UnregisteredMemberOrderPaidMail * Class UnregisteredMemberOrderPaidMail
@ -36,7 +37,9 @@ class UnregisteredMemberOrderPaidMail extends RegisteredMemberOrderPaidMail
*/ */
public function __construct(SummitOrder $order, string $set_password_link) public function __construct(SummitOrder $order, string $set_password_link)
{ {
Log::debug("UnregisteredMemberOrderPaidMail::__construct");
parent::__construct($order); parent::__construct($order);
Log::debug(sprintf("UnregisteredMemberOrderPaidMail::__construct %s", $this->template_identifier));
// need to add the dashboard client id and return url // need to add the dashboard client id and return url
$base_url = Config::get("registration.dashboard_base_url", null); $base_url = Config::get("registration.dashboard_base_url", null);
if(empty($base_url)) if(empty($base_url))

View File

@ -38,6 +38,7 @@ final class CompanySerializer extends SilverStripeSerializer
'CommitmentAuthor' => 'commitment_author:json_string', 'CommitmentAuthor' => 'commitment_author:json_string',
'LogoUrl' => 'logo:json_url', 'LogoUrl' => 'logo:json_url',
'BigLogoUrl' => 'big_logo:json_url', 'BigLogoUrl' => 'big_logo:json_url',
'Color' => 'color:json_string',
]; ];
/** /**
@ -52,15 +53,6 @@ final class CompanySerializer extends SilverStripeSerializer
$values = parent::serialize($expand, $fields, $relations, $params); $values = parent::serialize($expand, $fields, $relations, $params);
$company = $this->object; $company = $this->object;
if(!$company instanceof Company) return $values; if(!$company instanceof Company) return $values;
$color = isset($values['color']) ? $values['color']:'';
if(empty($color))
$color = 'f0f0ee';
if (strpos($color,'#') === false) {
$color = '#'.$color;
}
$values['color'] = $color;
return $values; return $values;
} }
} }

View File

@ -19,6 +19,7 @@ use Illuminate\Support\Facades\DB;
use App\Security\SummitScopes; use App\Security\SummitScopes;
use App\Security\OrganizationScopes; use App\Security\OrganizationScopes;
use App\Security\MemberScopes; use App\Security\MemberScopes;
use App\Security\CompanyScopes;
/** /**
* Class ApiScopesSeeder * Class ApiScopesSeeder
*/ */
@ -475,12 +476,12 @@ final class ApiScopesSeeder extends Seeder
$scopes = [ $scopes = [
[ [
'name' => sprintf('%s/companies/read', $current_realm), 'name' => sprintf(CompanyScopes::Read, $current_realm),
'short_description' => 'Get Companies Data', 'short_description' => 'Get Companies Data',
'description' => 'Grants read only access for Companies Data', 'description' => 'Grants read only access for Companies Data',
], ],
[ [
'name' => sprintf('%s/companies/write', $current_realm), 'name' => sprintf(CompanyScopes::Write, $current_realm),
'short_description' => 'Write Companies Data', 'short_description' => 'Write Companies Data',
'description' => 'Grants write only access for Companies Data', 'description' => 'Grants write only access for Companies Data',
], ],