$certificate = json_decode($redis->get($form->inputCertificate), true); $data = $mongodb->findOne(array('_id' => $form->inputApplicationId)); if ($data['owner'] == $session->user && $certificate['owner'] == $session->user) { // create the channel $channel = new Channel($form->inputId); $channel->setCertificate($form->inputCertificate); $channel->setApplication($form->inputApplicationId); $channel->setLabel($form->inputLabel); $channel->setDescription($form->inputDescription); $channel->setDefaultPermissions((int) $form->inputRead | (int) $form->inputWrite | (int) $form->inputDelete); // channel owner gets all permissions by default $certificate = $channel->generate_certificate(RenegadeConstants::kPermissionRead | RenegadeConstants::kPermissionWrite | RenegadeConstants::kPermissionDelete); $metadata = $channel->generate_metadata(); $subscription = new Subscription(); $subscription->setCertificate($certificate['key']); $subscription->setApplication($metadata['application']); $subscription->setChannel($metadata['_id']); $subscription->setMaster(true); // place us in the application db context $options = array('default' => Renegade::databaseForId($form->inputApplicationId)); $channels = Renegade::database(RenegadeConstants::kDatabaseMongoDB, RenegadeConstants::kDatabaseChannels, $options); $subscriptions = Renegade::database(RenegadeConstants::kDatabaseMongoDB, RenegadeConstants::kDatabaseSubscriptions, $options); $redis->set($certificate['key'], $certificate['value']); $channels->insert($metadata); $subscriptions->insert($subscription->toArray()); } else { // error, something is potentially wrong, either from the user or the system // lets assume the system, it's easy to throw guilt at the user =) echo 'Error'; exit; header('Location: /applications');
We need to add the channel to the local application's channels Send an e-mail requesting extended permissions here if requested */ // we are giving the fully qualified channel id here // so we will not need to set the application, it will be done for us $channel = new Channel($remote_channel['_id']); $channel->setCertificate($application['certificate']); $channel->setLabel($remote_channel['label']); $channel->setDescription($remote_channel['description']); $channel->setDefaultPermissions($remote_channel['defaultPermissions']); $certificate = $channel->generate_certificate($remote_channel['defaultPermissions']); $metadata = $channel->generate_metadata(); $metadata['requests'] = $remote_channel['requests']; $subscription = new Subscription(); $subscription->setCertificate($certificate['key']); $subscription->setApplication($form->inputApplicationId); $subscription->setChannel($metadata['_id']); $subscription->setMaster(false); $db_remote_options = array('default' => Renegade::databaseForId($remote_application)); $db_remote_subscriptions = Renegade::database(RenegadeConstants::kDatabaseMongoDB, RenegadeConstants::kDatabaseSubscriptions, $db_remote_options); $certificates = Renegade::database(RenegadeConstants::kDatabaseRedis, RenegadeConstants::kDatabaseCertificates); $db_remote_subscriptions->insert($subscription->toArray()); $db_channels->insert($metadata); $certificates->set($certificate['key'], $certificate['value']); // All Done Renegade::redirect('/applications/' . $form->inputApplicationId . '/channels'); } } else { echo 'channel not found'; //Renegade::redirect('/applications/'.$form->inputApplicationId.'./channels'); }