···63 if did is None:
64 return render_template("error.html", message="did not found"), 404
65 elif is_valid_did(atid):
066 did = atid
67 else:
68 return render_template("error.html", message="invalid did or handle"), 400
···85 return redirect(request.path)
8687 athref = f"at://{did}/at.ligo.actor.links/self"
88- return render_template("profile.html", profile=profile, links=links, athref=athref)
0000000899091@app.get("/login")
···63 if did is None:
64 return render_template("error.html", message="did not found"), 404
65 elif is_valid_did(atid):
66+ handle = None
67 did = atid
68 else:
69 return render_template("error.html", message="invalid did or handle"), 400
···86 return redirect(request.path)
8788 athref = f"at://{did}/at.ligo.actor.links/self"
89+ canonical = f"https://ligo.at/{f'@{handle}' if handle else did}"
90+ return render_template(
91+ "profile.html",
92+ profile=profile,
93+ links=links,
94+ canonical=canonical,
95+ athref=athref,
96+ )
979899@app.get("/login")
+4-1
src/templates/login.html
···24 </label>
25 <span class="faded caption">
26 Use your AT Protocol handle to log in.
27- If you're unsure you can <a href="{{ url_for('oauth.oauth_start', authserver='https://bsky.social') }}">log in with Bluesky</a>.
00028 </span>
29 <input type="submit" value="continue" />
30 </form>
···24 </label>
25 <span class="faded caption">
26 Use your AT Protocol handle to log in.
27+ If you're unsure you can
28+ <a href="{{ url_for('oauth.oauth_start', authserver='https://bsky.social') }}" rel="nofollow">
29+ log in with Bluesky
30+ </a>.
31 </span>
32 <input type="submit" value="continue" />
33 </form>