-
Notifications
You must be signed in to change notification settings - Fork 126
/
utilsAuth.py
64 lines (50 loc) · 2.35 KB
/
utilsAuth.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# -*- coding: utf-8 -*-
"""
Created on Thu May 5 16:01:40 2022
@author: suhlr
"""
import requests
from decouple import config
import getpass
import maskpass
import os
from utilsAPI import getAPIURL
API_URL = getAPIURL()
#%% Get token
def getToken(saveEnvPath=None):
if 'API_TOKEN' not in globals():
try: # look in environment file
token = config("API_TOKEN")
except:
try:
# If spyder, use maskpass
isSpyder = 'SPY_PYTHONPATH' in os.environ
isPycharm = 'PYCHARM_HOSTED' in os.environ
print('Login with credentials used at app.opencap.ai.\nVisit the website to make an account if you do not have one.\n')
if isSpyder:
un = maskpass.advpass(prompt="Enter Username:\n",ide=True)
pw = maskpass.advpass(prompt="Enter Password:\n",ide=True)
elif isPycharm:
print('Warning, you are in Pycharm, so the password will show up in the console.\n To avoid this, run createAuthenticationEnvFile.py from the terminal,\nthen re-open PyCharm.')
un = input("Enter username:")
pw = input("Enter password (will be shown in console):")
else:
un = getpass.getpass(prompt='Enter Username: ', stream=None)
pw = getpass.getpass(prompt='Enter Password: ', stream=None)
data = {"username":un,"password":pw}
resp = requests.post(API_URL + 'login/',data=data).json()
token = resp['token']
print('Login successful.')
if saveEnvPath is not None:
envPath = os.path.join(saveEnvPath,'.env')
f = open(envPath, "w")
f.write('API_TOKEN="' + token + '"')
f.close()
print('Authentication token saved to '+ envPath + '. DO NOT CHANGE THIS FILE NAME. If you do, your authentication token will get pushed to github. Restart your terminal for env file to load.')
except:
raise Exception('Login failed.')
global API_TOKEN
API_TOKEN = token
else:
token = API_TOKEN
return token