mirror of
https://git.waldn.net/git/knotteye/satyr.git
synced 2025-09-05 13:55:53 +00:00
Big Commit!
Seriously, this one is pretty massive. Satyr now has proper sessions in the browser (like a real website), and a lot of changes were made. API Endpoints were changed from requiring a username and password to requiring a valid JsonWebToken, obtained from /api/login Satyr will generate a PEM format key for JWT signing and verification on startup if it can't find one at config/jwt.pem This file was added to .gitignore Two new depencies: cookie-parser and jose, for reading and signing JWTs. Refactored http.ts into mutiple functions, with a couple helper functions related to cookies and JWT decoding and verification. Socket.IO chat will also automatically log in users with a valid JWT. Refactor api.ts to reflect new requirements from endpoints. Minor bugfix in server.ts so we don't throw an uncaught exception when rejecting a stream with an invalid key. Transcode options readded to default.toml. They do nothing and they are not sane defaults. Both of those things are in the todo list.
This commit is contained in:
@ -8,7 +8,7 @@
|
||||
<body>
|
||||
<div id="wrapper">
|
||||
<div id="header">
|
||||
<span style="float:left;"><h4><a href="/">{{ sitename }}</a> | <a href="/users">Users</a> <a href="/users/live">Live</a> <a href="/about">About</a></h4></span><span style="float:right;"><h4><a href="/help">Help</a> | <a href="/profile">Profile</a></h4></span>
|
||||
<span style="float:left;"><h4><a href="/">{{ sitename }}</a> | <a href="/users">Users</a> <a href="/users/live">Live</a> <a href="/about">About</a></h4></span><span style="float:right;"><h4><a href="/help">Help</a> | {% if auth.is %}<a href="/profile">{{ auth.name }}{% else %}<a href="/login">Log In{% endif %}</a></h4></span>
|
||||
</div>
|
||||
<div id="content">
|
||||
{% block content %}
|
||||
|
@ -1,11 +1,10 @@
|
||||
{% extends "base.njk" %}
|
||||
{% block content %}
|
||||
<h3>Change your password on {{ sitename }}</h3><span style="font-size: small;">Not registered yet? Sign up <a href="/register">here</a>.</br> Update your <a href="/profile">profile</a> or <a href="/changesk">stream key</a>.</span>
|
||||
<h3>Change your password on {{ sitename }}</h3>
|
||||
<p></p>
|
||||
<form action="/api/user/password" method="POST" target="responseFrame">
|
||||
Username: </br><input type="text" name="username" style="min-width: 300px" placeholder="e.g. lain"/></br>
|
||||
Password: </br><input type="password" name="password" style="min-width: 300px"/></br>
|
||||
New Password: </br><input type="password" name="newpassword" style="min-width: 300px"/></br>
|
||||
Old Password: </br><input type="password" name="password" style="min-width: 300px"/></br>
|
||||
New Password: </br><input type="password" name="newpassword" style="min-width: 300px"/></br></br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
<iframe name="responseFrame" border="0" frameborder="0" style="display: inline;"></iframe>
|
||||
|
@ -1,11 +0,0 @@
|
||||
{% extends "base.njk" %}
|
||||
{% block content %}
|
||||
<h3>Get a new stream key on {{ sitename }}</h3><span style="font-size: small;">Not registered yet? Sign up <a href="/register">here</a>.</br> Update your <a href="/profile">profile</a> or <a href="/changepwd">password</a>.</span>
|
||||
<p></p>
|
||||
<form action="/api/user/streamkey" method="POST" target="responseFrame">
|
||||
Username: </br><input type="text" name="username" style="min-width: 300px" placeholder="e.g. lain"/></br>
|
||||
Password: </br><input type="password" name="password" style="min-width: 300px"/></br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
<iframe name="responseFrame" border="0" frameborder="0" style="display: inline;"></iframe>
|
||||
{% endblock %}
|
10
templates/login.njk
Normal file
10
templates/login.njk
Normal file
@ -0,0 +1,10 @@
|
||||
{% extends "base.njk" %}
|
||||
{% block content %}
|
||||
<h3>Log in to {{ sitename }}</h3><span style="font-size: small;">Not registered yet? Sign up <a href="/register">here</a>.</br></br></span>
|
||||
<form action="/api/login" method="POST" target="responseFrame">
|
||||
Username: </br><input type="text" name="username" style="min-width: 300px" placeholder="e.g. lain"/></br>
|
||||
Password: </br><input type="password" name="password" style="min-width: 300px"/></br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
<iframe name="responseFrame" border="0" frameborder="0" style="display: inline;"></iframe>
|
||||
{% endblock %}
|
@ -1,14 +1,15 @@
|
||||
{% extends "base.njk" %}
|
||||
{% block content %}
|
||||
<h3>Update your profile on {{ sitename }}</h3><span style="font-size: small;">Not registered yet? Sign up <a href="/register">here</a>.</br> Change your <a href="/changepwd">password</a> or <a href="/changesk">stream key</a>.</span>
|
||||
<h3>Update your profile on {{ sitename }}</h3><span style="font-size: small;">Or, change your <a href="/changepwd">password</a>.</span>
|
||||
<p></p>
|
||||
<form action="/api/user" method="POST" target="responseFrame">
|
||||
Username: </br><input type="text" name="username" style="min-width: 300px" placeholder="e.g. lain"/></br>
|
||||
Password: </br><input type="password" name="password" style="min-width: 300px"/></br>
|
||||
<form action="/api/user/update" method="POST" target="responseFrame">
|
||||
Stream Title: </br><input type="text" name="title" style="min-width: 300px"/></br>
|
||||
Bio: </br><input type="text" name="bio" style="min-width: 300px; min-height: 150px;"/></br>
|
||||
Record VODs: <input type="checkbox" name="record" value="true"></br>
|
||||
<input type="submit" value="Submit">
|
||||
Record VODs: <input type="radio" name="record" value="true"> Yes<input type="radio" name="record" value="false" /> No</br></br>
|
||||
<input type="submit" value="Update Profile">
|
||||
</form></br>
|
||||
<form action="/api/user/streamkey" method="POST" target="responseFrame">
|
||||
<input type="submit" value="Request New Stream Key">
|
||||
</form>
|
||||
<iframe name="responseFrame" border="0" frameborder="0" style="display: inline;"></iframe>
|
||||
{% endblock %}
|
@ -1,17 +1,19 @@
|
||||
{% extends "base.njk" %}
|
||||
{% block content %}
|
||||
<div id="jscontainer" style="height: 100%;">
|
||||
<div id="jschild" style="width: 50%;height: 100%;text-align: left;margin: 20px;">
|
||||
<h3>Register on {{ sitename }}</h3><span style="font-size: small;">Already registered? Log in <a href="/login">here</a>.</br></br></span>
|
||||
<!--<div id="jscontainer" style="height: 100%;">
|
||||
<div id="jschild" style="width: 50%;height: 100%;text-align: left;margin: 20px;">-->
|
||||
<form action="/api/register" method="POST" target="responseFrame">
|
||||
Username: </br><input type="text" name="username" style="min-width: 300px" placeholder="e.g. lain"/></br>
|
||||
Password: </br><input type="password" name="password" style="min-width: 300px"/></br>
|
||||
Confirm: </br><input type="password" name="confirm" style="min-width: 300px"/></br>
|
||||
Confirm: </br><input type="password" name="confirm" style="min-width: 300px"/></br></br>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</form></br>
|
||||
|
||||
<!--</div>
|
||||
<div id="jschild" style="width: 50%;height: 100%;text-align: left;margin: 20px;">-->
|
||||
{% include "tos.html" %}</br>
|
||||
<iframe name="responseFrame" border="0" frameborder="0" style="display: inline;"></iframe>
|
||||
</div>
|
||||
<div id="jschild" style="width: 50%;height: 100%;text-align: left;margin: 20px;">
|
||||
{% include "tos.html" %}
|
||||
</div>
|
||||
</div>
|
||||
<!--</div>
|
||||
</div>-->
|
||||
{% endblock %}
|
Reference in New Issue
Block a user