mirror of
https://github.com/TitanEmbeds/Titan.git
synced 2025-06-17 03:45:25 +02:00
Basic embed interface + login to embed client
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
from titanembeds.database import db, Guilds, UnauthenticatedUsers, UnauthenticatedBans, AuthenticatedUsers
|
||||
from titanembeds.decorators import valid_session_required, discord_users_only
|
||||
from titanembeds.utils import get_client_ipaddr, discord_api, rate_limiter, channel_ratelimit_key, guild_ratelimit_key, cache, make_guildchannels_cache_key
|
||||
from titanembeds.utils import check_guild_existance, guild_query_unauth_users_bool, get_client_ipaddr, discord_api, rate_limiter, channel_ratelimit_key, guild_ratelimit_key, cache, make_guildchannels_cache_key
|
||||
from titanembeds.oauth import user_has_permission, generate_avatar_url
|
||||
from flask import Blueprint, abort, jsonify, session, request
|
||||
from sqlalchemy import and_
|
||||
@ -49,16 +49,6 @@ def checkUserBanned(guild_id, ip_address=None):
|
||||
return True
|
||||
return banned
|
||||
|
||||
def check_guild_existance(guild_id):
|
||||
dbGuild = Guilds.query.filter_by(guild_id=guild_id).first()
|
||||
if not dbGuild:
|
||||
return False
|
||||
guilds = discord_api.get_all_guilds()
|
||||
for guild in guilds:
|
||||
if guild_id == guild['id']:
|
||||
return True
|
||||
return False
|
||||
|
||||
def update_user_status(guild_id, username, user_key=None):
|
||||
if user_unauthenticated():
|
||||
ip_address = get_client_ipaddr()
|
||||
@ -88,7 +78,7 @@ def update_user_status(guild_id, username, user_key=None):
|
||||
}
|
||||
if status['banned'] or status['revoked']:
|
||||
return status
|
||||
dbUser = db.session.query(AuthenticatedUsers).filter(AuthenticatedUsers.guild_id == guild_id, AuthenticatedUsers.client_id == status['user_id']).first()
|
||||
dbUser = db.session.query(AuthenticatedUsers).filter(and_(AuthenticatedUsers.guild_id == guild_id, AuthenticatedUsers.client_id == status['user_id'])).first()
|
||||
dbUser.bumpTimestamp()
|
||||
return status
|
||||
|
||||
@ -144,17 +134,14 @@ def get_online_embed_users(guild_id):
|
||||
client_id = user.client_id
|
||||
u = discord_api.get_guild_member(guild_id, client_id)['content']['user']
|
||||
meta = {
|
||||
'id': u['id'],
|
||||
'username': u['username'],
|
||||
'discriminator': u['discriminator'],
|
||||
'avatar': generate_avatar_url(u['id'], u['avatar']),
|
||||
'avatar_url': generate_avatar_url(u['id'], u['avatar']),
|
||||
}
|
||||
users['authenticated'].append(meta)
|
||||
return users
|
||||
|
||||
def guild_query_unauth_users_bool(guild_id):
|
||||
dbGuild = Guilds.query.filter_by(guild_id=guild_id).first()
|
||||
return dbGuild.unauth_users
|
||||
|
||||
@api.route("/fetch", methods=["GET"])
|
||||
@valid_session_required(api=True)
|
||||
@rate_limiter.limit("2500/hour")
|
||||
@ -174,7 +161,7 @@ def fetch():
|
||||
messages = discord_api.get_channel_messages(channel_id, after_snowflake)
|
||||
status_code = messages['code']
|
||||
response = jsonify(messages=messages.get('content', messages), status=status)
|
||||
resonse.status_code = status_code
|
||||
response.status_code = status_code
|
||||
return response
|
||||
|
||||
@api.route("/post", methods=["POST"])
|
||||
@ -194,7 +181,7 @@ def post():
|
||||
status_code = 401
|
||||
else:
|
||||
message = discord_api.create_message(channel_id, content)
|
||||
status_code = messages['code']
|
||||
status_code = message['code']
|
||||
response = jsonify(message=message.get('content', message), status=status)
|
||||
response.status_code = status_code
|
||||
return response
|
||||
@ -255,7 +242,7 @@ def create_authenticated_user():
|
||||
if not check_guild_existance(guild_id):
|
||||
abort(404)
|
||||
if not checkUserBanned(guild_id):
|
||||
db_user = db.session.query(AuthenticatedUsers).filter(AuthenticatedUsers.guild_id == guild_id, AuthenticatedUsers.client_id == session['user_id']).first()
|
||||
db_user = db.session.query(AuthenticatedUsers).filter(and_(AuthenticatedUsers.guild_id == guild_id, AuthenticatedUsers.client_id == session['user_id'])).first()
|
||||
if not db_user:
|
||||
db_user = AuthenticatedUsers(guild_id, session['user_id'])
|
||||
db.session.add(db_user)
|
||||
@ -263,7 +250,7 @@ def create_authenticated_user():
|
||||
if not check_user_in_guild(guild_id):
|
||||
discord_api.add_guild_member(guild_id, session['user_id'], session['user_keys']['access_token'])
|
||||
status = update_user_status(guild_id, session['username'])
|
||||
return jsonify(error=False)
|
||||
return jsonify(status=status)
|
||||
else:
|
||||
status = {'banned': True}
|
||||
response = jsonify(status=status)
|
||||
|
@ -1,7 +1,40 @@
|
||||
from flask import Blueprint
|
||||
from flask import Blueprint, render_template, abort, redirect, url_for, session
|
||||
from titanembeds.utils import check_guild_existance, discord_api, guild_query_unauth_users_bool
|
||||
from titanembeds.oauth import generate_guild_icon_url, generate_avatar_url, check_user_can_administrate_guild
|
||||
import random
|
||||
|
||||
embed = Blueprint("embed", __name__)
|
||||
|
||||
@embed.route("/<guild_id>")
|
||||
def get_logingreeting():
|
||||
greetings = [
|
||||
"Let's get to know each other! My name is Titan, what's yours?",
|
||||
"Hello and welcome!",
|
||||
"What brings you here today?",
|
||||
"....what do you expect this text to say?",
|
||||
"Aha! ..made you look!",
|
||||
"Initiating launch sequence...",
|
||||
"Captain, what's your option?",
|
||||
"Alright, here's the usual~",
|
||||
]
|
||||
return random.choice(greetings)
|
||||
|
||||
@embed.route("/<string:guild_id>")
|
||||
def guild_embed(guild_id):
|
||||
return guild_id
|
||||
print guild_id
|
||||
if check_guild_existance(guild_id):
|
||||
guild = discord_api.get_guild(guild_id)['content']
|
||||
return render_template("embed.html.j2",
|
||||
login_greeting=get_logingreeting(),
|
||||
guild_id=guild_id, guild=guild,
|
||||
generate_guild_icon=generate_guild_icon_url,
|
||||
unauth_enabled=guild_query_unauth_users_bool(guild_id)
|
||||
)
|
||||
abort(404)
|
||||
|
||||
@embed.route("/signin_complete")
|
||||
def signin_complete():
|
||||
return render_template("signin_complete.html.j2")
|
||||
|
||||
@embed.route("/login_discord")
|
||||
def login_discord():
|
||||
return redirect(url_for("user.login_authenticated", redirect=url_for("embed.signin_complete", _external=True)))
|
@ -39,7 +39,7 @@ def callback():
|
||||
session['avatar'] = generate_avatar_url(user['id'], user['avatar'])
|
||||
if session["redirect"]:
|
||||
redir = session["redirect"]
|
||||
session.pop('redirect', None)
|
||||
session['redirect'] = None
|
||||
return redirect(redir)
|
||||
return redirect(url_for("user.dashboard"))
|
||||
|
||||
|
Reference in New Issue
Block a user