1
0

ProfileAliasController.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use App\Util\Lexer\Nickname;
  5. use App\Util\Webfinger\WebfingerUrl;
  6. use App\Models\ProfileAlias;
  7. use App\Services\WebfingerService;
  8. class ProfileAliasController extends Controller
  9. {
  10. public function __construct()
  11. {
  12. $this->middleware('auth');
  13. }
  14. public function index(Request $request)
  15. {
  16. $aliases = $request->user()->profile->aliases;
  17. return view('settings.aliases.index', compact('aliases'));
  18. }
  19. public function store(Request $request)
  20. {
  21. $this->validate($request, [
  22. 'acct' => 'required'
  23. ]);
  24. $acct = $request->input('acct');
  25. if($request->user()->profile->aliases->count() >= 3) {
  26. return back()->with('error', 'You can only add 3 account aliases.');
  27. }
  28. $webfingerService = WebfingerService::lookup($acct);
  29. if(!$webfingerService || !isset($webfingerService['url'])) {
  30. return back()->with('error', 'Invalid account, cannot add alias at this time.');
  31. }
  32. $alias = new ProfileAlias;
  33. $alias->profile_id = $request->user()->profile_id;
  34. $alias->acct = $acct;
  35. $alias->uri = $webfingerService['url'];
  36. $alias->save();
  37. return back()->with('status', 'Successfully added alias!');
  38. }
  39. public function delete(Request $request)
  40. {
  41. $this->validate($request, [
  42. 'acct' => 'required',
  43. 'id' => 'required|exists:profile_aliases'
  44. ]);
  45. $alias = ProfileAlias::where('profile_id', $request->user()->profile_id)
  46. ->where('acct', $request->input('acct'))
  47. ->findOrFail($request->input('id'));
  48. $alias->delete();
  49. return back()->with('status', 'Successfully deleted alias!');
  50. }
  51. }