forked from parkersruth/opencap-processing
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutilsAuthentication.py
77 lines (59 loc) · 3.12 KB
/
utilsAuthentication.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
65
66
67
68
69
70
71
72
73
74
75
76
77
'''
---------------------------------------------------------------------------
OpenCap processing: utilsAuthentication.py
---------------------------------------------------------------------------
Copyright 2022 Stanford University and the Authors
Author(s): Antoine Falisse, Scott Uhlrich
Licensed under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy
of the License at http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
'''
import requests
from decouple import config
import getpass
import os
import maskpass
from utilsAPI import get_api_url
API_URL = get_api_url()
def get_token(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