diff --git a/Libs/ModelSerializers/AbstractSerializer.php b/Libs/ModelSerializers/AbstractSerializer.php index ca0af75f..f37a10ba 100644 --- a/Libs/ModelSerializers/AbstractSerializer.php +++ b/Libs/ModelSerializers/AbstractSerializer.php @@ -132,6 +132,7 @@ abstract class AbstractSerializer implements IModelSerializer const FloatType = 'json_float'; const ObfuscatedEmailType = 'json_obfuscated_email'; const UrlType = 'json_url'; + const ColorType = 'json_color'; const ValidTypes = [ self::BoolType, @@ -141,6 +142,7 @@ abstract class AbstractSerializer implements IModelSerializer self::FloatType, self::ObfuscatedEmailType, self::UrlType, + self::ColorType, ]; /** @@ -221,6 +223,11 @@ abstract class AbstractSerializer implements IModelSerializer $value = JsonUtils::toJsonBoolean($value); } break; + case 'json_color': + { + $value = JsonUtils::toJsonColor($value); + } + break; case 'json_int': { $value = JsonUtils::toJsonInt($value); diff --git a/Libs/Utils/JsonUtils.php b/Libs/Utils/JsonUtils.php index 9c6cc5f9..ae6a1fb3 100644 --- a/Libs/Utils/JsonUtils.php +++ b/Libs/Utils/JsonUtils.php @@ -69,6 +69,20 @@ abstract class JsonUtils 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 * @return int|null diff --git a/app/Http/Controllers/Apis/Protected/Main/OAuth2CompaniesApiController.php b/app/Http/Controllers/Apis/Protected/Main/OAuth2CompaniesApiController.php index 8025022c..50be0e01 100644 --- a/app/Http/Controllers/Apis/Protected/Main/OAuth2CompaniesApiController.php +++ b/app/Http/Controllers/Apis/Protected/Main/OAuth2CompaniesApiController.php @@ -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); + } + } } \ No newline at end of file diff --git a/app/Http/Middleware/UserAuthEndpoint.php b/app/Http/Middleware/UserAuthEndpoint.php index a2dbf79f..817c4163 100644 --- a/app/Http/Middleware/UserAuthEndpoint.php +++ b/app/Http/Middleware/UserAuthEndpoint.php @@ -15,6 +15,7 @@ use App\Models\ResourceServer\ApiEndpoint; use App\Models\ResourceServer\IApiEndpointRepository; use Closure; +use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Response; use libs\utils\RequestUtils; use models\main\IMemberRepository; @@ -77,6 +78,9 @@ final class UserAuthEndpoint $required_groups = $endpoint->getAuthzGroups(); 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())) return $next($request); } diff --git a/app/Http/routes.php b/app/Http/routes.php index f736bdff..41fc112e 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -73,7 +73,7 @@ Route::group([ Route::get('', 'OAuth2CompaniesApiController@getAllCompanies'); Route::post('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@add']); 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::delete('', [ 'middleware' => 'auth.user', 'uses' => 'OAuth2CompaniesApiController@delete']); Route::group(['prefix'=>'logo'], function(){ diff --git a/app/Jobs/Emails/AbstractEmailJob.php b/app/Jobs/Emails/AbstractEmailJob.php index f413757d..2c51fb18 100644 --- a/app/Jobs/Emails/AbstractEmailJob.php +++ b/app/Jobs/Emails/AbstractEmailJob.php @@ -59,6 +59,7 @@ abstract class AbstractEmailJob implements ShouldQueue public function __construct(array $payload, ?string $template_identifier, string $to_email, ?string $subject = null) { $this->template_identifier = $template_identifier; + Log::debug(sprintf("AbstractEmailJob::__construct template_identifier %s", $template_identifier)); if(empty($this->template_identifier)){ throw new \InvalidArgumentException("missing template_identifier value"); } diff --git a/app/Jobs/Emails/Registration/RegisteredMemberOrderPaidMail.php b/app/Jobs/Emails/Registration/RegisteredMemberOrderPaidMail.php index fd205369..56625f25 100644 --- a/app/Jobs/Emails/Registration/RegisteredMemberOrderPaidMail.php +++ b/app/Jobs/Emails/Registration/RegisteredMemberOrderPaidMail.php @@ -12,6 +12,7 @@ * limitations under the License. **/ use Illuminate\Support\Facades\Config; +use Illuminate\Support\Facades\Log; use models\summit\SummitOrder; use models\summit\SummitRegistrationDiscountCode; /** @@ -110,7 +111,7 @@ class RegisteredMemberOrderPaidMail extends AbstractEmailJob $payload['tickets'] = $tickets; $template_identifier = $this->getEmailTemplateIdentifierFromEmailEvent($summit); - + Log::debug(sprintf("RegisteredMemberOrderPaidMail::__construct template_identifier %s", $template_identifier)); parent::__construct($payload, $template_identifier, $owner_email); } diff --git a/app/Jobs/Emails/Registration/UnregisteredMemberOrderPaidMail.php b/app/Jobs/Emails/Registration/UnregisteredMemberOrderPaidMail.php index fa59ab10..f395b307 100644 --- a/app/Jobs/Emails/Registration/UnregisteredMemberOrderPaidMail.php +++ b/app/Jobs/Emails/Registration/UnregisteredMemberOrderPaidMail.php @@ -12,6 +12,7 @@ * limitations under the License. **/ use Illuminate\Support\Facades\Config; +use Illuminate\Support\Facades\Log; use models\summit\SummitOrder; /** * Class UnregisteredMemberOrderPaidMail @@ -36,7 +37,9 @@ class UnregisteredMemberOrderPaidMail extends RegisteredMemberOrderPaidMail */ public function __construct(SummitOrder $order, string $set_password_link) { + Log::debug("UnregisteredMemberOrderPaidMail::__construct"); parent::__construct($order); + Log::debug(sprintf("UnregisteredMemberOrderPaidMail::__construct %s", $this->template_identifier)); // need to add the dashboard client id and return url $base_url = Config::get("registration.dashboard_base_url", null); if(empty($base_url)) diff --git a/app/ModelSerializers/CompanySerializer.php b/app/ModelSerializers/CompanySerializer.php index 39cc98b1..ef060dc7 100644 --- a/app/ModelSerializers/CompanySerializer.php +++ b/app/ModelSerializers/CompanySerializer.php @@ -38,6 +38,7 @@ final class CompanySerializer extends SilverStripeSerializer 'CommitmentAuthor' => 'commitment_author:json_string', 'LogoUrl' => '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); $company = $this->object; 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; } } \ No newline at end of file diff --git a/database/seeds/ApiScopesSeeder.php b/database/seeds/ApiScopesSeeder.php index 5c578d8a..d646bdf0 100644 --- a/database/seeds/ApiScopesSeeder.php +++ b/database/seeds/ApiScopesSeeder.php @@ -19,6 +19,7 @@ use Illuminate\Support\Facades\DB; use App\Security\SummitScopes; use App\Security\OrganizationScopes; use App\Security\MemberScopes; +use App\Security\CompanyScopes; /** * Class ApiScopesSeeder */ @@ -475,12 +476,12 @@ final class ApiScopesSeeder extends Seeder $scopes = [ [ - 'name' => sprintf('%s/companies/read', $current_realm), + 'name' => sprintf(CompanyScopes::Read, $current_realm), 'short_description' => 'Get 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', 'description' => 'Grants write only access for Companies Data', ],