| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
A simple Node.js application for Discord authentication. This project allows users to log in using their Discord credentials and access information about their servers and connections.
Clone the repository:
git clone https://github.com/fastuptime/Discord_Authentication_Basic.git
cd Discord_Authentication_BasicInstall dependencies:
npm installCreate a config.js file with your Discord credentials:
db: your_atlas_url clientID: your_client_id clientSecret: your_client_secret callbackURL: your_redirect_uri
Start the application:
npm startHome Page (index.ejs)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Discord Auth</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.min.css">
</head>
<body>
<section class="section">
<div class="container">
<div class="columns is-centered">
<div class="column is-half">
<% if(user) { %>
<div class="box">
<h1 class="title">Welcome, <%= user.username %></h1>
<p class="subtitle">You are logged in with Discord</p>
<a href="/servers" class="button is-primary">Servers</a>
<a href="/connections" class="button is-dark">Connections</a>
<a href="/auth/logout" class="button is-danger">Logout</a>
</div>
<% } else { %>
<div class="box">
<h1 class="title">Discord Auth</h1>
<p class="subtitle">Login with Discord</p>
<a href="/auth/login" class="button is-primary">Login</a>
</div>
<% } %>
</div>
</div>
</div>
</section>
</body>
</html>Servers Page (servers.ejs)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Discord Servers</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.min.css">
</head>
<body>
<section class="section">
<div class="container">
<div class="columns is-centered">
<div class="column is-half">
<% if(servers) { %>
<div class="box">
<h1 class="title">Sunucular</h1>
<p class="subtitle">
Katıldığınız sunucular
</p>
<% servers.forEach(server => { %>
<div class="box">
<article class="media">
<div class="media-left is-hidden-mobile">
<figure class="image is-64x64">
<img src="https://cdn.discordapp.com/icons/<%= server.id %>/<%= server.icon %>.png" style="border-radius: 50%;">
</figure>
</div>
<div class="media-content">
<div class="content">
<p>
<strong><%= server.name %></strong>
<br>
<small><%= server.id %></small>
<br>
<small>Statü: <%= server.owner ? 'Sahip' : 'Üye' %></small>
</p>
</div>
</div>
</article>
</div>
<% }) %>
</div>
<% } else { %>
<div class="box">
<h1 class="title">Hata</h1>
<p class="subtitle">
Sunuculara erişim izniniz yok
</p>
</div>
<% } %>
<a href="/" class="button is-primary">Anasayfa</a>
</div>
</div>
</div>
</section>
</body>
</html>Connections Page (connections.ejs)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Discord Connections</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.5/css/bulma.min.css">
</head>
<body>
<section class="section">
<div class="container">
<div class="columns is-centered">
<div class="column is-half">
<% if(connections) { %>
<div class="box">
<h1 class="title">Bağlantılar</h1>
<p class="subtitle">
Bağlantılarınız
</p>
<% connections.forEach(x => { %>
<div class="box">
<article class="media">
<div class="media-content">
<div class="content">
<p>
<strong><%= x.name %></strong>
<br>
<small><%= x.id %></small>
<br>
<small>Platform: <%= x.type %></small>
<br>
<small>Doğrulandı: <%= x.verified ? 'Evet' : 'Hayır' %></small>
<br>
<small>Görünürlük: <%= x.visibility ? 'Görünür' : 'Gizli' %></small>
<br>
<small>Arkadaş Senkronizasyonu: <%= x.friend_sync ? 'Açık' : 'Kapalı' %></small>
<br>
<small>Metadata Görünürlüğü: <%= x.metadata_visibility ? 'Açık' : 'Kapalı' %></small>
<br>
<small>Aktivite Göster: <%= x.show_activity ? 'Açık' : 'Kapalı' %></small>
<br>
<small>İki Yönlü Bağlantı: <%= x.two_way_link ? 'Açık' : 'Kapalı' %></small>
</p>
</div>
</div>
</article>
</div>
<% }) %>
</div>
<% } else { %>
<div class="box">
<h1 class="title">Hata</h1>
<p class="subtitle">
Erişim izniniz yok
</p>
</div>
<% } %>
<a href="/" class="button is-primary">Anasayfa</a>
</div>
</div>
</div>
</section>
</body>
</html>const router = require('express').Router();
const passport = require('passport');
const session = require('express-session');
var DiscordStrategy = require('passport-discord').Strategy;
app.use(session({
secret: 'secret',
resave: false,
saveUninitialized: false,
cookie: {
maxAge: 1000 * 60 * 60 * 24 * 7 * 2, // 2 weeks
}
}));
passport.use(new DiscordStrategy({
clientID: config.clientID,
clientSecret: config.clientSecret,
callbackURL: config.callbackURL,
scope: ['identify', 'guilds', 'email', 'connections']
}, async function(accessToken, refreshToken, profile, done) {
let user = await userModel.findOne({ userID: profile.id });
if (!user) {
var newUser = new userModel({
userID: profile.id,
guilds: profile.guilds,
email: profile.email,
connections: profile.connections,
});
newUser.save();
return done(null, newUser);
} else {
user.guilds = profile.guilds;
user.email = profile.email;
user.connections = profile.connections;
user.save();
return done(null, user);
}
}));
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(obj, done) {
done(null, obj);
});
router.get('/login', passport.authenticate('discord', { scope: ['identify', 'guilds', 'email', 'connections'] }), function(req, res) {});
router.get('/callback', function(req, res, next) {
passport.authenticate('discord', {
successRedirect: '/',
failureRedirect: '/'
})(req, res, w => {
console.log(w);
if(w) return res.send(`<center><h1>Something went wrong. Please try again later.</h1></center>`);
})});
app.use(passport.initialize());
app.use(passport.session());
router.get('/logout', function(req, res) {
req.logout();
res.redirect('/');
});
module.exports = router;| Back | FazBrowse Home | New Git URL |