mirror of https://github.com/itsmrval/accessGate
dynamic user for authorized keys and bug fix
parent
7b0a757fc7
commit
092ab264bc
7
index.js
7
index.js
|
|
@ -12,16 +12,13 @@ serverService = require("./services/server.service");
|
||||||
const User = require('./model/user.model')
|
const User = require('./model/user.model')
|
||||||
const Key = require('./model/key.model')
|
const Key = require('./model/key.model')
|
||||||
const Member = require("./model/member.model");
|
const Member = require("./model/member.model");
|
||||||
|
const {makeAdmin} = require("./services/users.service");
|
||||||
const app = express();
|
const app = express();
|
||||||
|
|
||||||
|
|
||||||
databaseService.sync().then(() => {
|
databaseService.sync().then(() => {
|
||||||
console.log("Database ready");
|
console.log("Database ready");
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
app.use(bodyParser.urlencoded({ extended: false }))
|
app.use(bodyParser.urlencoded({ extended: false }))
|
||||||
|
|
||||||
// parse application/json
|
// parse application/json
|
||||||
|
|
@ -78,7 +75,7 @@ app.get("/login", (req, res) => {
|
||||||
res.render('login')
|
res.render('login')
|
||||||
});
|
});
|
||||||
|
|
||||||
userService.makeAdmin("itsmrval")
|
|
||||||
|
|
||||||
app.use('/admin/', require('./routes/admin.route'));
|
app.use('/admin/', require('./routes/admin.route'));
|
||||||
app.use('/auth/', require('./routes/auth.route'));
|
app.use('/auth/', require('./routes/auth.route'));
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,9 @@ router.get("/", (req, res) => {
|
||||||
if (server.hostname === req.query.server) {
|
if (server.hostname === req.query.server) {
|
||||||
secret_display.content = server.tmp
|
secret_display.content = server.tmp
|
||||||
secret_display.url = process.env.APP_URL
|
secret_display.url = process.env.APP_URL
|
||||||
secret_display.name = server.hostname
|
secret_display.name = server.hostname,
|
||||||
|
secret_display.user = server.username
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,9 @@ router.get("/:server", async (req, res) => {
|
||||||
raw += '# ' + x + '\n' + result[x] + '\n\n'
|
raw += '# ' + x + '\n' + result[x] + '\n\n'
|
||||||
}
|
}
|
||||||
res.send(raw)
|
res.send(raw)
|
||||||
|
server.lastPull =
|
||||||
|
server.save()
|
||||||
|
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
res.send("invalid request")
|
res.send("invalid request")
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
const {default: axios} = require("axios");
|
const {default: axios} = require("axios");
|
||||||
const User = require('../model/user.model')
|
const User = require('../model/user.model')
|
||||||
|
const userService = require("./users.service");
|
||||||
|
|
||||||
async function getToken(code) {
|
async function getToken(code) {
|
||||||
var client_id = process.env.GITHUB_CLIENT_ID
|
var client_id = process.env.GITHUB_CLIENT_ID
|
||||||
|
|
@ -37,6 +38,11 @@ async function syncUser(user) {
|
||||||
avatar: user.avatar_url,
|
avatar: user.avatar_url,
|
||||||
displayName: user.name
|
displayName: user.name
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
|
User.findAll().then((users) => {
|
||||||
|
if (users.length === 1) {
|
||||||
|
userService.makeAdmin(user.login)
|
||||||
|
}
|
||||||
|
})
|
||||||
console.log('user ' + user.login + ' added to database')
|
console.log('user ' + user.login + ' added to database')
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,8 +27,6 @@ async function addGroup(name) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async function delGroup(name) {
|
async function delGroup(name) {
|
||||||
Group.findOne({where: { name: name}}).then((result) => {
|
Group.findOne({where: { name: name}}).then((result) => {
|
||||||
if (result && regexp_space.test(name)) {
|
if (result && regexp_space.test(name)) {
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@
|
||||||
⚠️ The installation command <b>will not be shown again later.</b> ⚠️
|
⚠️ The installation command <b>will not be shown again later.</b> ⚠️
|
||||||
</div>
|
</div>
|
||||||
<div class="alert alert-success" role="alert">
|
<div class="alert alert-success" role="alert">
|
||||||
Run the command below to login the server <br><code>bash <( curl -s https://raw.githubusercontent.com/itsmrval/accessgate/scripts/agent.sh ) '<%= locals.secret.url %>' <%= locals.secret.name %> <%= locals.secret.content %> </code>
|
Run the command below to login the server <br><code>bash <( curl -s https://raw.githubusercontent.com/itsmrval/accessgate/scripts/agent.sh ) '<%= locals.secret.url %>' <%= locals.secret.name %> <%= locals.secret.content %> <%= locals.secret.user %> </code>
|
||||||
</div>
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
|
|
@ -54,7 +54,7 @@
|
||||||
<td><%= server.ip %></td>
|
<td><%= server.ip %></td>
|
||||||
<td><%= server.username %></td>
|
<td><%= server.username %></td>
|
||||||
|
|
||||||
<td><%= server.lastPull %> <% if (!server.lastPull) { %>never<% } %></td>
|
<td><%= server.lastPull.toISOString().replace(/T/, ' ').replace(/\..+/, '') %> <% if (!server.lastPull) { %>never<% } %></td>
|
||||||
<td style="text-align: right;"> <a class="btn btn-sm btn-danger" href="/admin/servers/delete/<%= server.hostname %>"><i class="far fa-trash-alt"></i></a></td>
|
<td style="text-align: right;"> <a class="btn btn-sm btn-danger" href="/admin/servers/delete/<%= server.hostname %>"><i class="far fa-trash-alt"></i></a></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% }) %>
|
<% }) %>
|
||||||
|
|
|
||||||
|
|
@ -26,9 +26,7 @@
|
||||||
<% keys.forEach(function (key) { %>
|
<% keys.forEach(function (key) { %>
|
||||||
<tr>
|
<tr>
|
||||||
<td><%= key.name %></td>
|
<td><%= key.name %></td>
|
||||||
|
|
||||||
<td><%= key.content %></td>
|
<td><%= key.content %></td>
|
||||||
|
|
||||||
<td style="text-align: right;"><a class="btn btn-sm btn-danger" href="/admin/users/<%= user.id %>/deleteKey/<%= key.name %>"><i class="far fa-trash-alt"></i></button></td>
|
<td style="text-align: right;"><a class="btn btn-sm btn-danger" href="/admin/users/<%= user.id %>/deleteKey/<%= key.name %>"><i class="far fa-trash-alt"></i></button></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% }) %>
|
<% }) %>
|
||||||
|
|
@ -45,6 +43,26 @@
|
||||||
<div class="mb-3"><button class="btn btn-primary btn-sm" type="submit">Add key</button></div>
|
<div class="mb-3"><button class="btn btn-primary btn-sm" type="submit">Add key</button></div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card shadow col-md-6">
|
||||||
|
<div class="card-header py-3">
|
||||||
|
<p class="text-primary m-0 fw-bold">Other</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="row">
|
||||||
|
<form method="POST" action="/admin/users/<%= user.id %>/updateRole/">
|
||||||
|
<div class="mb-3">
|
||||||
|
<input type="checkbox" id="admin" name="admin" <% if (user.admin) {%> checked <% }%> />
|
||||||
|
<label for="scales">Admin permissions</label>
|
||||||
|
</div>
|
||||||
|
<div class="mb-3"></div>
|
||||||
|
<div class="mb-3"><button class="btn btn-primary btn-sm" type="submit">Save</button></div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,20 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function resizeTextArea(textarea) {
|
||||||
|
const { style, value } = textarea;
|
||||||
|
style.height = style.minHeight = 'auto';
|
||||||
|
style.minHeight = `${ Math.min(textarea.scrollHeight + 4, parseInt(textarea.style.maxHeight)) }px`;
|
||||||
|
style.height = `${ textarea.scrollHeight + 4 }px`;
|
||||||
|
}
|
||||||
|
|
||||||
|
const textarea = document.getElementById('textarea');
|
||||||
|
|
||||||
|
textarea.addEventListener('input', () => {
|
||||||
|
resizeTextArea(textarea);
|
||||||
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
@ -63,7 +63,10 @@
|
||||||
<div class="col me-2">
|
<div class="col me-2">
|
||||||
<h6 class="mb-0 text-primary"><strong><%= x %></strong></h6><span class="text-xs"><i class="fas fa-clock"> </i> <b>Last pull:</b> <%= servers[x].lastPull %></span>
|
<h6 class="mb-0 text-primary"><strong><%= x %></strong></h6><span class="text-xs"><i class="fas fa-clock"> </i> <b>Last pull:</b> <%= servers[x].lastPull %></span>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-auto"><code><%= servers[x].username %>@<%= servers[x].ip %></code></div>
|
<div class="col"><code><%= servers[x].username %>@<%= servers[x].ip %></code></div>
|
||||||
|
|
||||||
|
<div class="col-auto"><a href="ssh://<%= servers[x].username %>@<%= servers[x].ip %>" class="btn btn-sm btn-primary"><i class="fas fa-terminal"></i> Connect</a></div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td><%= key.name %></td>
|
<td><%= key.name %></td>
|
||||||
|
|
||||||
<td><%= key.content %></td>
|
<td><textarea class="form-control" rows="1" disabled><%= key.content %></textarea></td>
|
||||||
|
|
||||||
<td style="text-align: right;"><a class="btn btn-sm btn-danger" href="/keys/delete/<%= key.name %>"><i class="far fa-trash-alt"></i></button></td>
|
<td style="text-align: right;"><a class="btn btn-sm btn-danger" href="/keys/delete/<%= key.name %>"><i class="far fa-trash-alt"></i></button></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue