In the beginning...
This commit is contained in:
commit
b0461ea329
3 changed files with 103 additions and 0 deletions
2
README.md
Normal file
2
README.md
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
# Matrix auth plugin for PeerTube
|
||||||
|
Forked from LDAP plugin
|
79
main.js
Normal file
79
main.js
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
const fs = require('fs/promises')
|
||||||
|
|
||||||
|
|
||||||
|
async function register ({
|
||||||
|
registerIdAndPassAuth,
|
||||||
|
registerSetting,
|
||||||
|
settingsManager,
|
||||||
|
peertubeHelpers
|
||||||
|
}) {
|
||||||
|
|
||||||
|
registerSetting({
|
||||||
|
name: 'url',
|
||||||
|
label: 'Domain',
|
||||||
|
type: 'input',
|
||||||
|
descriptionHTML: 'domain of matrix server',
|
||||||
|
private: true
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
registerIdAndPassAuth({
|
||||||
|
authName: 'matrix',
|
||||||
|
getWeight: () => 500,
|
||||||
|
login: options => login(peertubeHelpers, settingsManager, options)
|
||||||
|
})
|
||||||
|
|
||||||
|
setWeight(500)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
async function unregister () {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
register,
|
||||||
|
unregister
|
||||||
|
}
|
||||||
|
|
||||||
|
async function login (peertubeHelpers, settingsManager, options) {
|
||||||
|
const logger = peertubeHelpers.logger
|
||||||
|
|
||||||
|
const settings = await settingsManager.getSettings([
|
||||||
|
'url',
|
||||||
|
])
|
||||||
|
// options.id, options.password
|
||||||
|
|
||||||
|
const r = await fetch(`https://${settings.url}/_matrix/client/v3/login`, {
|
||||||
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
type: "m.login.password",
|
||||||
|
identifier: {
|
||||||
|
type: "m.id.user",
|
||||||
|
user: options.id,
|
||||||
|
},
|
||||||
|
password: options.password,
|
||||||
|
initial_display_name: "PeerTube"
|
||||||
|
})}).then(f => f.json())
|
||||||
|
if(r.access_token){
|
||||||
|
const r2 = fetch(`https://${settings.url}/_matrix/client/logout`, {
|
||||||
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
Authorization: r.access_token
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if(r2.statusCode == 200){
|
||||||
|
return res(
|
||||||
|
options.id,
|
||||||
|
`${options.id}@0ut0f.space`
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
22
package.json
Normal file
22
package.json
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{
|
||||||
|
"name": "peertube-plugin-auth-matrix",
|
||||||
|
"version": "0.0.14",
|
||||||
|
"description": "Add Matrix support to login form in PeerTube.",
|
||||||
|
"engine": {
|
||||||
|
"peertube": ">=2.2.0"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"peertube",
|
||||||
|
"plugin",
|
||||||
|
"auth"
|
||||||
|
],
|
||||||
|
"homepage": "https://framagit.org/framasoft/peertube/official-plugins/tree/master/peertube-plugin-auth-ldap",
|
||||||
|
"author": "Chocobozzz",
|
||||||
|
"bugs": "https://framagit.org/framasoft/peertube/official-plugins/issues",
|
||||||
|
"library": "./main.js",
|
||||||
|
"staticDirs": {},
|
||||||
|
"css": [],
|
||||||
|
"clientScripts": [],
|
||||||
|
"translations": {},
|
||||||
|
"dependencies": {}
|
||||||
|
}
|
Loading…
Reference in a new issue