Skip to content

Commit

Permalink
Merge branch 'ntoenk1186-master'
Browse files Browse the repository at this point in the history
  • Loading branch information
cydrobolt committed Sep 11, 2016
2 parents fbb6568 + ab95465 commit 3afca87
Show file tree
Hide file tree
Showing 9 changed files with 68 additions and 50 deletions.
22 changes: 0 additions & 22 deletions .env.setup

This file was deleted.

11 changes: 8 additions & 3 deletions app/Exceptions/Handler.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,15 @@ public function render($request, Exception $e)
{
if (env('APP_DEBUG') != true) {
// Render nice error pages if debug is off
if ($e instanceof NotFoundHttpException){
if ($e instanceof NotFoundHttpException) {
if (env('SETTING_REDIRECT_404')) {
// Redirect 404s to SETTING_INDEX_REDIRECT
return redirect()->to(env('SETTING_INDEX_REDIRECT'));
}
// Otherwise, show a nice error page
return view('errors.404');
}
if ($e instanceof HttpException){
if ($e instanceof HttpException) {
$status_code = $e->getStatusCode();
$status_message = $e->getMessage();

Expand All @@ -54,7 +59,7 @@ public function render($request, Exception $e)
return view('errors.500');
}
else {
// If not 500, then render generic page
// If not 500, render generic page
return response(view('errors.generic', ['status_code' => $status_code, 'status_message' => $status_message]), $status_code);
}
}
Expand Down
42 changes: 24 additions & 18 deletions app/Http/Controllers/LinkController.php
Original file line number Diff line number Diff line change
Expand Up @@ -48,46 +48,52 @@ public function performRedirect(Request $request, $short_url, $secret_key=false)
$link = Link::where('short_url', $short_url)
->first();

// Return 404 if link not found
if ($link == null) {
return abort(404);
return abort(404);
}

$link_secret_key = $link->secret_key;

// Return an error if the link has been disabled
// or return a 404 if SETTING_REDIRECT_404 is set to true
if ($link->is_disabled == 1) {
if (env('SETTING_REDIRECT_404')) {
return abort(404);
}

return view('error', [
'message' => 'Sorry, but this link has been disabled by an administrator.'
]);
}

// Return a 403 if the secret key is incorrect
$link_secret_key = $link->secret_key;
if ($link_secret_key) {
if (!$secret_key) {
// if we do not receieve a secret key
// when we are expecting one, return a 403
return abort(403);
}
else {
if ($link_secret_key != $secret_key) {
// a secret key is provided, but it is incorrect
return abort(403);
}
}

if (!$secret_key) {
// if we do not receieve a secret key
// when we are expecting one, return a 403
return abort(403);
}
else {
if ($link_secret_key != $secret_key) {
// a secret key is provided, but it is incorrect
return abort(403);
}
}
}

// Increment click count
$long_url = $link->long_url;
$clicks = intval($link->clicks);

if (is_int($clicks)) {
$clicks += 1;
}

$link->clicks = $clicks;

$link->save();

// Redirect to final destination
LinkHelper::processPostClick($link);

return redirect()->to($long_url);
}

}
2 changes: 2 additions & 0 deletions app/Http/Controllers/SetupController.php
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@ public static function performSetup(Request $request) {
// if true, only logged in users can shorten
$st_shorten_permission = $request->input('setting:shorten_permission');
$st_index_redirect = $request->input('setting:index_redirect');
$st_redirect_404 = $request->input('setting:redirect_404');
$st_password_recov = $request->input('setting:password_recovery');

$st_base = $request->input('setting:base');
Expand Down Expand Up @@ -143,6 +144,7 @@ public static function performSetup(Request $request) {
'POLR_ACCT_ACTIVATION' => $polr_acct_activation,
'ST_SHORTEN_PERMISSION' => $st_shorten_permission,
'ST_INDEX_REDIRECT' => $st_index_redirect,
'ST_REDIRECT_404' => $st_redirect_404,
'ST_PASSWORD_RECOV' => $st_password_recov,

'MAIL_ENABLED' => $mail_enabled,
Expand Down
2 changes: 2 additions & 0 deletions phpunit.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,7 @@
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
<env name="SETTING_REDIRECT_URL_NOT_EXIST" value="true"/>
<env name="SETTING_INDEX_REDIRECT" value="http://redirect.polr.me/"/>
</php>
</phpunit>
Binary file modified public/img/setup.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 5 additions & 1 deletion resources/views/env.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,14 @@
# Set to true to require users to be logged in before shortening URLs
SETTING_SHORTEN_PERMISSION={{$ST_SHORTEN_PERMISSION}}

# You must set SETTING_INDEX_REDIRETC if SETTING_PUBLIC_INTERFACE is false
# You must set SETTING_INDEX_REDIRECT if SETTING_PUBLIC_INTERFACE is false
# Polr will redirect logged off users to this URL
SETTING_INDEX_REDIRECT={{$ST_INDEX_REDIRECT}}

# Set to true if you wish to redirect 404s to SETTING_INDEX_REDIRECT
# Otherwise, an error message will be shown
SETTING_REDIRECT_404={{$ST_REDIRECT_404}}

# Set to true to enable password recovery
SETTING_PASSWORD_RECOV={{$ST_PASSWORD_RECOV}}

Expand Down
18 changes: 12 additions & 6 deletions resources/views/setup.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
<p>Application protocol:</p>
<input type='text' class='form-control' name='app:protocol' value='http://'>

<p>Application URL (path to Polr, no http://, or trailing slash):</p>
<p>Application URL (path to Polr; do not include http:// or trailing slash):</p>
<input type='text' class='form-control' name='app:external_url' value='yoursite.com'>

<p>Shortening Permissions:</p>
Expand All @@ -61,15 +61,21 @@
<option value='true'>Only logged in users may shorten URLs</option>
</select>

<p>Show Public Interface:</p>
<p>Public Interface:</p>
<select name='setting:public_interface' class='form-control'>
<option value='true' selected='selected'>Show public interface (default)</option>
<option value='false'>Hide public interface (for private shorteners)</option>
<option value='false'>Redirect index page to redirect URL</option>
</select>

<p>404s and Disabled Short Links:</p>
<select name='setting:redirect_404' class='form-control'>
<option value='false' selected='selected'>Show an error message (default)</option>
<option value='true'>Redirect to redirect URL</option>
</select>

<p>
If public interface is hidden, redirect index page to:
<button data-content="Required if public interface is hidden. To use Polr, login by directly heading to yoursite.com/login first." type="button" class="btn btn-xs btn-default setup-qmark" data-toggle="popover">?</button>
Redirect URL:
<button data-content="Required if you wish to redirect the index page or 404s to a different website. To use Polr, login by directly heading to yoursite.com/login first." type="button" class="btn btn-xs btn-default setup-qmark" data-toggle="popover">?</button>
</p>
<input type='text' class='form-control' name='setting:index_redirect' placeholder='http://your-main-site.com'>
<p class='text-muted'>
Expand Down Expand Up @@ -181,7 +187,7 @@
<option value='//maxcdn.bootstrapcdn.com/bootswatch/3.3.6/simplex/bootstrap.min.css'>Crisp White</option>
<option value='//maxcdn.bootstrapcdn.com/bootswatch/3.3.6/darkly/bootstrap.min.css'>Cloudy Night</option>
<option value='//maxcdn.bootstrapcdn.com/bootswatch/3.3.6/cerulean/bootstrap.min.css'>Calm Skies</option>
<option value='//maxcdn.bootstrapcdn.com/bootswatch/3.3.6/paper/bootstrap.min.css'>Android Material Design</option>
<option value='//maxcdn.bootstrapcdn.com/bootswatch/3.3.6/paper/bootstrap.min.css'>Google Material Design</option>
<option value='//maxcdn.bootstrapcdn.com/bootswatch/3.3.6/superhero/bootstrap.min.css'>Blue Metro</option>
<option value='//maxcdn.bootstrapcdn.com/bootswatch/3.3.6/sandstone/bootstrap.min.css'>Sandstone</option>
<option value='//maxcdn.bootstrapcdn.com/bootswatch/3.3.6/cyborg/bootstrap.min.css'>Jet Black</option>
Expand Down
15 changes: 15 additions & 0 deletions tests/LinkControllerTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

class LinkControllerTest extends TestCase
{
/**
* Test LinkController
*
* @return void
*/
public function testRequestGetNotExistShortUrl() {
$response = $this->call('GET', '/notexist');
$this->assertTrue($response->isRedirection());
$this->assertRedirectedTo(env('SETTING_INDEX_REDIRECT'));
}
}

0 comments on commit 3afca87

Please sign in to comment.