1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-23 19:44:20 +00:00

Add Steam linking

This commit is contained in:
Steffo 2017-10-04 23:29:02 +02:00
parent 160c96f310
commit f3338c2fe9
WARNING! Although there is a key with this ID in the database it does not verify this commit! This commit is SUSPICIOUS.
GPG key ID: C27544372FBB445D
3 changed files with 59 additions and 0 deletions

18
db.py
View file

@ -49,6 +49,24 @@ class Telegram(Base):
return self.first_name return self.first_name
class Steam(Base):
__tablename__ = "steam"
royal_id = Column(Integer, ForeignKey("royals.id"))
royal = relationship("Royal")
steam_id = Column(String, primary_key=True)
def __repr__(self):
return f"<Steam {self.steam_id}>"
def __str__(self):
if self.steam_name is not None:
return self.steam_name
else:
return self.steam_id
# If run as script, create all the tables in the db # If run as script, create all the tables in the db
if __name__ == "__main__": if __name__ == "__main__":
Base.metadata.create_all(bind=engine) Base.metadata.create_all(bind=engine)

39
steam.py Normal file
View file

@ -0,0 +1,39 @@
from flask import Flask
from flask import session as flask_session
from flask_openid import OpenID
from db import session, Royal, Steam
import re
# Init the config reader
import configparser
config = configparser.ConfigParser()
config.read("config.ini")
# Init Flask and Flask_OpenID
app = Flask(__name__)
app.secret_key = config["Steam"]["secret_key"]
oid = OpenID(app)
@app.route("/login/<int:royal_id>")
@oid.loginhandler
def page_steam_login(royal_id):
flask_session["royal_id"] = royal_id
return oid.try_login("http://steamcommunity.com/openid")
@oid.after_login
def page_after_login(response):
steam_id = re.search("https?://steamcommunity\.com/openid/id/(.+)", response.identity_url).group(1)
db_steam = session.query(Steam).filter(Steam.steam_id == steam_id).first()
if db_steam is None:
db_steam = Steam(royal_id=flask_session["royal_id"],
steam_id=steam_id)
session.add(db_steam)
session.commit()
return "Account Steam collegato con successo!"
else:
return "Il tuo account Steam è già collegato."
if __name__ == "__main__":
app.run(host="0.0.0.0", port=config["Steam"]["flask_port"])

View file

@ -14,6 +14,7 @@ logging.basicConfig(level=logging.DEBUG, format="[%(levelname)s] %(asctime)s | %
# Init the Telegram Bot # Init the Telegram Bot
updater = Updater(token=config["Telegram"]["bot_token"]) updater = Updater(token=config["Telegram"]["bot_token"])
def message_sync(bot: Bot, update: Update): def message_sync(bot: Bot, update: Update):
tg_user = update.message.from_user tg_user = update.message.from_user
db_user = session.query(Telegram).filter(Telegram.telegram_id == tg_user.id).first() db_user = session.query(Telegram).filter(Telegram.telegram_id == tg_user.id).first()
@ -44,5 +45,6 @@ def message_sync(bot: Bot, update: Update):
session.commit() session.commit()
bot.send_message(update.message.chat.id, "✅ Sincronizzazione completata!") bot.send_message(update.message.chat.id, "✅ Sincronizzazione completata!")
updater.dispatcher.add_handler(CommandHandler("sync", message_sync)) updater.dispatcher.add_handler(CommandHandler("sync", message_sync))
updater.start_polling() updater.start_polling()