Spaces:
Runtime error
Runtime error
# Import libraries | |
import os | |
import streamlit as st | |
import pandas as pd | |
import numpy as np | |
from PIL import Image | |
from streamlit_extras.switch_page_button import switch_page | |
from baam_functions import * | |
from pathlib import Path | |
# Set parent direction as current folder | |
sourceFileDir = Path(os.path.dirname(os.path.abspath(__file__))).parent.absolute() | |
os.chdir(sourceFileDir) | |
logo = Image.open('img/logo.png') | |
st.set_page_config(page_title = "BAAM", page_icon = logo) | |
def main(): | |
# Get user_dict & location from previous page | |
user_dict = st.session_state['user_dict'] | |
location = st.session_state['location'] | |
score_dict = st.session_state['score_dict'] | |
risk_threshold = st.session_state['risk_threshold'] | |
# Get username from user_dict | |
username = user_dict.get('username', '') | |
# Header of the page | |
col1, col2, col3 = st.columns([6,6,2]) | |
with col1: | |
st.subheader("Welcome " + username) | |
with col2: | |
st.write(' ') | |
with col3: | |
st.image("img/Standard_Chartered.png", width=100) | |
if not(score_dict): | |
st.write('This is the 1st login time of this username.') | |
else: | |
device_score = score_dict.get('device_score', '') | |
ip_score = score_dict.get('ip_score', '') | |
location_score = score_dict.get('location_score', '') | |
jump_score = score_dict.get('jump_score', '') | |
vpn_score = score_dict.get('vpn_score', '') | |
total_score = score_dict.get('total_score', '') | |
# Show history | |
col = ['login_time','device_name', 'device_uuid','mac_address', 'device_vendor', 'device_model', 'device_ram',\ | |
'ip_v4','ip_country', 'ip_region', 'ip_city', 'ip_lat', 'ip_lon', 'isp_name','isp_org',\ | |
'is_vpn', 'is_proxy', 'is_tor', 'is_relay', \ | |
'lat', 'lon','suburb', 'district', 'city', 'country'] | |
user_db = pd.DataFrame(get_login_history(username)).T | |
user_db.columns= col | |
st.subheader("Historical data: ") | |
st.write(user_db) | |
print(user_db) | |
# Display user's current information on the page | |
st.subheader("Current login: ") | |
show_test_data(user_dict, location) | |
user_db['lat'] = pd.to_numeric(user_db['lat']) | |
user_db['lon'] = pd.to_numeric(user_db['lon']) | |
col1, col2 = st.columns([4,6]) | |
with col1: | |
st.write('Device score', round(device_score)) | |
st.write('IP score', round(ip_score)) | |
st.write('Location score', round(location_score)) | |
st.write('Jump score', round(jump_score)) | |
st.write('VPN score', round(vpn_score)) | |
st.write('----------------------') | |
st.write('Total score') | |
st.write('device_score + ip_score + location_score - (jump_score + vpn_score)', round(total_score)) | |
if total_score > risk_threshold: | |
st.write('Total score > Risk threshold') | |
st.image("img/passed_da.png", width=200) | |
else: | |
st.write('Total score < Risk threshold') | |
st.image("img/failed_da.png", width=200) | |
with col2: | |
st.map(user_db[['lat', 'lon']]) | |
if __name__ == '__main__': | |
main() | |