Skip to content

Commit c646711

Browse files
committed
2 parents 41625d0 + 05a090d commit c646711

File tree

28 files changed

+2897
-958
lines changed

28 files changed

+2897
-958
lines changed

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@ contact_links:
33
- name: Feature Request
44
url: https://github.com/orgs/LinkStackOrg/discussions/categories/feature-requests
55
about: Requests regarding new features, enhancements, or changes
6+
- name: Commission Custom Features
7+
url: https://linkstack.org/contact/
8+
about: Accelerate feature implementation with our commissioned services. Reach out to us for a personalized quote and fast-track the features you need.
69
- name: Button requests
710
url: https://github.com/orgs/LinkStackOrg/discussions/categories/predefined-links
811
about: Requests regarding new buttons, brands, updated styling or changes
912
- name: Docker Issues
1013
url: https://github.com/LinkStackOrg/linkstack-docker/issues
1114
about: Issues regarding the Docker version exclusively or reverse proxy issues related to the Docker instance
12-
15+

app/Http/Controllers/AdminController.php

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
use App\Models\Button;
2828
use App\Models\Link;
2929
use App\Models\Page;
30+
use App\Models\UserData;
3031

3132
class AdminController extends Controller
3233
{
@@ -113,13 +114,31 @@ public function blockUser(request $request)
113114
return redirect('admin/users/all');
114115
}
115116

117+
//Verify user
118+
public function verifyCheckUser(request $request)
119+
{
120+
$id = $request->id;
121+
$status = $request->verify;
122+
123+
if ($status == 'vip') {
124+
$verify = 'vip';
125+
UserData::saveData($id, 'checkmark', true);
126+
} elseif ($status == 'user') {
127+
$verify = 'user';
128+
}
129+
130+
User::where('id', $id)->update(['role' => $verify]);
131+
132+
return redirect(url('u')."/".$id);
133+
}
134+
116135
//Verify or un-verify users emails
117136
public function verifyUser(request $request)
118137
{
119138
$id = $request->id;
120139
$status = $request->verify;
121140

122-
if ($status == '-') {
141+
if ($status == "true") {
123142
$verify = '0000-00-00 00:00:00';
124143
} else {
125144
$verify = NULL;
@@ -147,9 +166,25 @@ function random_str(
147166
return implode('', $pieces);
148167
}
149168

169+
$names = User::pluck('name')->toArray();
170+
171+
$adminCreatedNames = array_filter($names, function($name) {
172+
return strpos($name, 'Admin-Created-') === 0;
173+
});
174+
175+
$numbers = array_map(function($name) {
176+
return (int) str_replace('Admin-Created-', '', $name);
177+
}, $adminCreatedNames);
178+
179+
$maxNumber = !empty($numbers) ? max($numbers) : 0;
180+
$newNumber = $maxNumber + 1;
181+
182+
$domain = parse_url(url(''), PHP_URL_HOST);
183+
$domain = ($domain == 'localhost') ? 'example.com' : $domain;
184+
150185
$user = User::create([
151-
'name' => 'Admin-Created-' . random_str(8),
152-
'email' => random_str(8) . '@example.com',
186+
'name' => 'Admin-Created-' . $newNumber,
187+
'email' => strtolower(random_str(8)) . '@' . $domain,
153188
'password' => Hash::make(random_str(32)),
154189
'role' => 'user',
155190
'block' => 'no',

app/Http/Controllers/Auth/RegisteredUserController.php

Lines changed: 24 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -11,33 +11,36 @@
1111
use Illuminate\Support\Facades\Hash;
1212
use Illuminate\Support\Facades\DB;
1313
use Illuminate\Support\Facades\Mail;
14+
use Illuminate\Support\Facades\Validator;
1415

1516
class RegisteredUserController extends Controller
1617
{
17-
/**
18-
* Display the registration view.
19-
*
20-
* @return \Illuminate\View\View
21-
*/
18+
2219
public function create()
2320
{
2421
return view('auth.register');
2522
}
2623

27-
/**
28-
* Handle an incoming registration request.
29-
*
30-
* @param \Illuminate\Http\Request $request
31-
* @return \Illuminate\Http\RedirectResponse
32-
*
33-
* @throws \Illuminate\Validation\ValidationException
34-
*/
24+
public function validateHandle(Request $request)
25+
{
26+
$validator = Validator::make($request->all(), [
27+
'littlelink_name' => 'required|string|max:50|unique:users',
28+
]);
29+
30+
if ($validator->fails()) {
31+
return response()->json(['valid' => false]);
32+
}
33+
34+
return response()->json(['valid' => true]);
35+
}
36+
3537
public function store(Request $request)
3638
{
3739
$request->validate([
3840
'name' => 'required|string|max:255',
41+
'littlelink_name' => 'required|string|max:50|unique:users',
3942
'email' => 'required|string|email|max:255|unique:users',
40-
'password' => 'required|string|confirmed|min:8',
43+
'password' => 'required|string|min:8',
4144
]);
4245

4346
$name = $request->input('name');
@@ -48,23 +51,13 @@ public function store(Request $request)
4851
$block = 'no';
4952
}
5053

51-
if(DB::table('users')->where('littlelink_name', $request->name)->exists())
52-
{
53-
Auth::login($user = User::create([
54-
'name' => $request->name,
55-
'email' => $request->email,
56-
'password' => Hash::make($request->password),
57-
'role' => 'user',
58-
]));
59-
} else {
60-
Auth::login($user = User::create([
61-
'name' => $request->name,
62-
'email' => $request->email,
63-
'littlelink_name' => $request->name,
64-
'password' => Hash::make($request->password),
65-
'role' => 'user',
66-
]));
67-
}
54+
Auth::login($user = User::create([
55+
'name' => $request->name,
56+
'email' => $request->email,
57+
'littlelink_name' => $request->littlelink_name,
58+
'password' => Hash::make($request->password),
59+
'role' => 'user',
60+
]));
6861

6962
$user->block = $block;
7063
$user->save();

app/Http/Controllers/UserController.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -789,6 +789,7 @@ public function editPage(Request $request)
789789
$name = $request->name;
790790
$checkmark = $request->checkmark;
791791
$sharebtn = $request->sharebtn;
792+
$tablinks = $request->tablinks;
792793

793794
if(env('HOME_URL') !== '' && $pageName != $littlelink_name && $littlelink_name == env('HOME_URL')){
794795
EnvEditor::editKey('HOME_URL', $pageName);
@@ -816,6 +817,12 @@ public function editPage(Request $request)
816817
} else {
817818
UserData::saveData($userId, 'disable-sharebtn', true);
818819
}
820+
821+
if ($tablinks == "on") {
822+
UserData::saveData($userId, 'links-new-tab', true);
823+
} else {
824+
UserData::saveData($userId, 'links-new-tab', false);
825+
}
819826

820827
return Redirect('/studio/page');
821828
}

app/Http/Kernel.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ class Kernel extends HttpKernel
5454
* @var array
5555
*/
5656
protected $routeMiddleware = [
57+
'disableCookies' => \App\Http\Middleware\DisableCookies::class,
5758
'auth' => \App\Http\Middleware\Authenticate::class,
5859
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
5960
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,

app/Http/Livewire/UserTable.php

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ public function configure(): void
2323
public function columns(): array
2424
{
2525
return [
26+
// Column::make("", "id")
27+
// ->format(function ($value, $row, Column $column) {
28+
// return view('components.table-components.select', ['user' => $row]);
29+
// }),
2630
Column::make(__('messages.ID'), "id")
2731
->sortable()
2832
->searchable(),
@@ -37,7 +41,7 @@ public function columns(): array
3741
->searchable()
3842
->format(function ($value, $row, Column $column) {
3943
if (!$row->littlelink_name == NULL) {
40-
return "<a href='" . url('') . "/@" . $row->littlelink_name . "' target='_blank' class='text-info'><i class='bi bi-box-arrow-up-right'></i>&nbsp; " . $row->littlelink_name . " </a>";
44+
return "<a href='" . url('') . "/@" . htmlspecialchars($row->littlelink_name) . "' target='_blank' class='text-info'><i class='bi bi-box-arrow-up-right'></i>&nbsp; " . $row->littlelink_name . " </a>";
4145
} else {
4246
return 'N/A';
4347
}
@@ -61,34 +65,39 @@ public function columns(): array
6165
->format(function ($value, $row, Column $column) {
6266
if (env('REGISTER_AUTH') !== 'auth') {
6367
if ($row->role == 'admin' && $row->email_verified_at != '') {
64-
return '<center>-</center>';
68+
return '<div class="text-center">-</div>';
6569
} else {
70+
if($row->email_verified_at == ''){
71+
$verifyLinkBool = 'true';
72+
} else {
73+
$verifyLinkBool = 'false';
74+
}
6675
$verifyLink = route('verifyUser', [
67-
'verify' => '-' . $row->email_verified_at,
76+
'verify' => $verifyLinkBool,
6877
'id' => $row->id
6978
]);
7079
if ($row->email_verified_at == '') {
71-
return '<a style="cursor:pointer" data-id="'.$verifyLink.'" class="user-email text-danger"><span class="badge bg-danger">' . __('messages.Pending') . '</span></a>';
80+
return '<div class="text-center"><a style="cursor:pointer" data-id="'.$verifyLink.'" class="user-email text-danger"><span class="badge bg-danger">' . __('messages.Pending') . '</span></a></div>';
7281
} else {
73-
return '<a style="cursor:pointer" data-id="'.$verifyLink.'" class="user-email text-danger"><span class="badge bg-success">' . __('messages.Verified') . '</span></a>';
82+
return '<div class="text-center"><a style="cursor:pointer" data-id="'.$verifyLink.'" class="user-email text-danger"><span class="badge bg-success">' . __('messages.Verified') . '</span></a></div>';
7483
}
7584
}
7685
} else {
77-
return '<center>-</center>';
86+
return '<div class="text-center">-</div>';
7887
}
7988
return '';
8089
})->html(),
8190
Column::make(__('messages.Status'), "block")
8291
->sortable()
8392
->format(function ($value, $row, Column $column) {
8493
if ($row->role === 'admin' && $row->id === 1) {
85-
return '<center>-</center>';
94+
return '<div class="text-center">-</div>';
8695
} else {
8796
$route = route('blockUser', ['block' => $row->block, 'id' => $row->id]);
8897
if ($row->block === 'yes') {
89-
$badge = '<a style="cursor:pointer" data-id="'.$route.'" class="user-block text-danger"><span class="badge bg-danger">'.__('messages.Pending').'</span></a>';
98+
$badge = '<div class="text-center"><a style="cursor:pointer" data-id="'.$route.'" class="user-block text-danger"><span class="badge bg-danger">'.__('messages.Pending').'</span></a></div>';
9099
} elseif ($row->block === 'no') {
91-
$badge = '<a style="cursor:pointer" data-id="'.$route.'" class="user-block text-danger"><span class="badge bg-success">'.__('messages.Approved').'</span></a>';
100+
$badge = '<div class="text-center"><a style="cursor:pointer" data-id="'.$route.'" class="user-block text-danger"><span class="badge bg-success">'.__('messages.Approved').'</span></a></div>';
92101
}
93102
return "<a href=\"$route\">$badge</a>";
94103
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
namespace App\Http\Middleware;
4+
5+
use Closure;
6+
use Illuminate\Support\Facades\Cookie;
7+
use Illuminate\Http\Request;
8+
9+
class DisableCookies
10+
{
11+
12+
public function handle(Request $request, Closure $next)
13+
{
14+
$cookiesAlreadySet = $request->hasCookie(strtolower(config('app.name')).'_session') || $request->hasCookie('XSRF-TOKEN');
15+
16+
if ($cookiesAlreadySet) {
17+
return $next($request);
18+
}
19+
20+
Cookie::queue(Cookie::forget(strtolower(config('app.name')).'_session'));
21+
Cookie::queue(Cookie::forget('XSRF-TOKEN'));
22+
config(['session.driver' => 'array']);
23+
24+
$response = $next($request);
25+
$response->headers->remove('Set-Cookie');
26+
27+
return $response;
28+
}
29+
}

assets/linkstack/icons/bluesky.svg

Lines changed: 2 additions & 13 deletions
Loading

composer.json

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,15 @@
2323
"spatie/laravel-backup": "^8.17"
2424
},
2525
"require-dev": {
26-
"spatie/laravel-ignition": "^1.0",
2726
"barryvdh/laravel-ide-helper": "^2.12",
2827
"fakerphp/faker": "^1.9.1",
28+
"laravel-lang/common": "^2.0",
2929
"laravel/breeze": "^1.1",
3030
"laravel/sail": "^1.0.1",
3131
"mockery/mockery": "^1.4.2",
3232
"nunomaduro/collision": "^6.1",
33-
"phpunit/phpunit": "^9.3.3"
33+
"phpunit/phpunit": "^9.3.3",
34+
"spatie/laravel-ignition": "^1.0"
3435
},
3536
"autoload": {
3637
"files": [
@@ -48,14 +49,15 @@
4849
}
4950
},
5051
"scripts": {
52+
"post-update-cmd": [
53+
"php artisan vendor:publish --tag=laravel-assets --ansi --force",
54+
"php artisan lang:update",
55+
"echo.> storage/app/ISINSTALLED"
56+
],
5157
"post-autoload-dump": [
5258
"Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
5359
"@php artisan package:discover --ansi"
54-
],
55-
"post-root-package-install": [
56-
"@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
57-
],
58-
"post-update-cmd": ["echo.> storage/app/ISINSTALLED"]
60+
]
5961
},
6062
"extra": {
6163
"laravel": {

0 commit comments

Comments
 (0)