get('/user', function (Request $request) { return $request->user(); }); Route::middleware([]) ->as('api.') ->group(function () { Route::resource('countries', \App\Http\Controllers\Api\CountryController::class); Route::resource('meetup', \App\Http\Controllers\Api\MeetupController::class); Route::resource('languages', \App\Http\Controllers\Api\LanguageController::class); Route::get('meetups', function () { return \App\Models\Meetup::query() ->with([ 'city', ]) ->get() ->map(fn($meetup) => [ 'name' => $meetup->name, 'url' => $meetup->telegram_link ?? $meetup->webpage, 'top' => $meetup->github_data['top'] ?? null, 'left' => $meetup->github_data['left'] ?? null, 'country' => str($meetup->city->country->code)->upper(), 'state' => $meetup->github_data['state'] ?? null, 'city' => $meetup->city->name, 'longitude' => (float) $meetup->city->longitude, 'latitude' => (float) $meetup->city->latitude, 'twitter_username' => $meetup->twitter_username, 'website' => $meetup->webpage, ]); }); Route::get('btc-map-communities', function () { return response()->json(\App\Models\Meetup::query() ->with([ 'city.country', ]) // ->where('community', '=', 'einundzwanzig') // ->whereHas('city', // fn($query) => $query // ->whereNotNull('cities.simplified_geojson') // ->whereNotNull('cities.population') // ->whereNotNull('cities.population_date') // ) ->get() ->map(fn($meetup) => [ 'id' => $meetup->slug, 'tags' => [ 'type' => 'community', 'name' => $meetup->name, 'continent' => 'europe', 'icon:square' => $meetup->getFirstMediaUrl('logo'), 'contact:email' => null, 'contact:twitter' => 'https://twitter.com/'.$meetup->twitter_username, 'contact:website' => $meetup->webpage, 'tips:lightning_address' => null, 'organization' => 'einundzwanzig', 'language' => $meetup->city->country->language_codes[0], 'geo_json' => $meetup->city->simplified_geojson, 'population' => $meetup->city->population, 'population:date' => $meetup->city->population_date, ], ]) ->toArray(), 200, ['Content-Type' => 'application/json;charset=UTF-8', 'Charset' => 'utf-8'], JSON_UNESCAPED_SLASHES); }); }); Route::get('/lnurl-auth-callback', function (\Illuminate\Http\Request $request) { if (lnurl\auth($request->k1, $request->sig, $request->key)) { // find User by $wallet_public_key $user = User::query() ->whereBlind('public_key', 'public_key_index', $request->key) ->first(); if (!$user) { // create User $user = User::create([ 'public_key' => $request->key, 'is_lecturer' => true, 'name' => $request->key, 'email' => str($request->key)->substr(-12).'@portal.einundzwanzig.space' ]); $user->ownedTeams() ->save(Team::forceCreate([ 'user_id' => $user->id, 'name' => $request->key."'s Team", 'personal_team' => true, ])); } // check if $k1 is in the database, if not, add it $loginKey = LoginKey::where('k1', $request->k1) ->first(); if (!$loginKey) { LoginKey::create([ 'k1' => $request->k1, 'user_id' => $user->id, ]); } return response()->json(['status' => 'OK']); } return response()->json(['status' => 'ERROR', 'reason' => 'Signature was NOT VERIFIED']); }) ->name('auth.ln.callback');