now all users will be friend of the admin upon account creation
This commit is contained in:
parent
f7b9ff9b8b
commit
c578a4c56f
@ -4,6 +4,8 @@ namespace App\Actions;
|
|||||||
|
|
||||||
use GuzzleHttp\Client;
|
use GuzzleHttp\Client;
|
||||||
|
|
||||||
|
use App\Models\User;
|
||||||
|
|
||||||
use App\Types\TypeActor;
|
use App\Types\TypeActor;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
|
||||||
@ -33,6 +35,36 @@ class ActionsFriends {
|
|||||||
return ["success" => "Friend added"];
|
return ["success" => "Friend added"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function force_friendship (User $user1, User $user2)
|
||||||
|
{
|
||||||
|
$actor1 = $user1->actor ()->first ();
|
||||||
|
$actor2 = $user2->actor ()->first ();
|
||||||
|
|
||||||
|
try {
|
||||||
|
$client = new Client ();
|
||||||
|
$response = $client->post ($actor1->outbox, [
|
||||||
|
"json" => [
|
||||||
|
"type" => "Follow",
|
||||||
|
"object" => $actor2->actor_id
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
|
||||||
|
$response = $client->post ($actor2->outbox, [
|
||||||
|
"json" => [
|
||||||
|
"type" => "Follow",
|
||||||
|
"object" => $actor1->actor_id
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
catch (\Exception $e)
|
||||||
|
{
|
||||||
|
Log::error ("Error adding friend: " . $e->getMessage ());
|
||||||
|
return ["error" => "Error adding friend"];
|
||||||
|
}
|
||||||
|
|
||||||
|
return ["success" => "Friend added"];
|
||||||
|
}
|
||||||
|
|
||||||
public static function remove_friend ($target)
|
public static function remove_friend ($target)
|
||||||
{
|
{
|
||||||
if (!auth ()->check ())
|
if (!auth ()->check ())
|
||||||
|
@ -48,6 +48,9 @@ class APInboxController extends Controller
|
|||||||
|
|
||||||
private function handle_follow (User $user, $activity)
|
private function handle_follow (User $user, $activity)
|
||||||
{
|
{
|
||||||
|
if (TypeActivity::activity_exists ($activity["id"]))
|
||||||
|
return response ()->json (["error" => "Activity already exists",], 409);
|
||||||
|
|
||||||
$actor = TypeActor::actor_exists_or_obtain ($activity ["actor"]);
|
$actor = TypeActor::actor_exists_or_obtain ($activity ["actor"]);
|
||||||
|
|
||||||
$target = TypeActor::actor_get_local ($activity ["object"]);
|
$target = TypeActor::actor_get_local ($activity ["object"]);
|
||||||
@ -63,7 +66,6 @@ class APInboxController extends Controller
|
|||||||
|
|
||||||
$activity ["activity_id"] = $activity ["id"];
|
$activity ["activity_id"] = $activity ["id"];
|
||||||
|
|
||||||
// there's no follows model, it'll be handled with the activity model
|
|
||||||
$act = Activity::create ($activity);
|
$act = Activity::create ($activity);
|
||||||
|
|
||||||
$follow = Follow::create ([
|
$follow = Follow::create ([
|
||||||
|
@ -5,6 +5,8 @@ namespace App\Http\Controllers;
|
|||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use App\Models\Actor;
|
use App\Models\Actor;
|
||||||
|
|
||||||
|
use App\Actions\ActionsFriends;
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class UserController extends Controller
|
class UserController extends Controller
|
||||||
@ -32,6 +34,11 @@ class UserController extends Controller
|
|||||||
$actor->create_from_user ($user);
|
$actor->create_from_user ($user);
|
||||||
auth ()->login ($user);
|
auth ()->login ($user);
|
||||||
|
|
||||||
|
// create a friendship between the new user and the admin
|
||||||
|
$admin = User::where ("is_admin", 1)->first ();
|
||||||
|
if ($admin)
|
||||||
|
ActionsFriends::force_friendship ($user, $admin);
|
||||||
|
|
||||||
return redirect ()->route ("home")->with ("success", "You have successfuly signed up!");
|
return redirect ()->route ("home")->with ("success", "You have successfuly signed up!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('users', function (Blueprint $table) {
|
||||||
|
$table->boolean ("is_admin")->default (false);
|
||||||
|
$table->boolean ("is_mod")->default (false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('users', function (Blueprint $table) {
|
||||||
|
$table->dropColumn ("is_admin");
|
||||||
|
$table->dropColumn ("is_mod");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
@ -3,7 +3,12 @@
|
|||||||
<p>{{ $user->name }}</p>
|
<p>{{ $user->name }}</p>
|
||||||
</a>
|
</a>
|
||||||
<a href="{{ route ('users.show', [ 'user_name' => $user->local_actor_id ? $user->local_actor_id : $user->name ]) }}">
|
<a href="{{ route ('users.show', [ 'user_name' => $user->local_actor_id ? $user->local_actor_id : $user->name ]) }}">
|
||||||
<img loading="lazy" src="{{ $user->avatar ? $user->avatar : $user->icon }}" alt="{{ $user->name }}'s profile picture"
|
@if ($user instanceof App\Models\User)
|
||||||
class="pfp-fallback" style="width: 100%; max-height: 95px; aspect-ratio: 1/1">
|
<img loading="lazy" src="{{ $user->avatar }}" alt="{{ $user->name }}'s profile picture"
|
||||||
|
class="pfp-fallback" style="width: 100%; max-height: 95px; aspect-ratio: 1/1">
|
||||||
|
@else
|
||||||
|
<img loading="lazy" src="{{ $user->user_id ? $user->user ()->first ()->avatar : $user->icon }}" alt="{{ $user->name }}'s profile picture"
|
||||||
|
class="pfp-fallback" style="width: 100%; max-height: 95px; aspect-ratio: 1/1">
|
||||||
|
@endif
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user