Skip to content

Commit

Permalink
Store user database token in cairis_user
Browse files Browse the repository at this point in the history
  • Loading branch information
failys committed May 1, 2019
1 parent e0505c7 commit 1789574
Show file tree
Hide file tree
Showing 12 changed files with 36 additions and 98 deletions.
5 changes: 0 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,6 @@ addons:
- docbook-utils
- libxml2-dev
- libxslt1-dev
- python-dbus
- gnome-keyring
- libffi-dev
- libssl-dev
- python3-keyring

env:
- PYTHONPATH=. CAIRIS_SRC=$PYTHONPATH/cairis CAIRIS_CFG=cairis_travis.cnf XML_CATALOG_FILES=$CAIRIS_SRC/config/catalog
Expand Down
7 changes: 4 additions & 3 deletions cairis/bin/add_cairis_user.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
from flask_cors import CORS
from cairis.core.Borg import Borg
from cairis.core.MySQLDatabaseProxy import createDatabaseAccount,createDatabaseAndPrivileges,createDatabaseSchema
from cairis.core.PasswordManager import setDatabasePassword
import cairis.core.BorgFactory

__author__ = 'Shamal Faily'
Expand Down Expand Up @@ -51,6 +50,7 @@ class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(255), unique=True)
password = db.Column(db.String(255))
dbtoken = db.Column(db.String(255))
name = db.Column(db.String(255))
active = db.Column(db.Boolean())
confirmed_at = db.Column(db.DateTime())
Expand All @@ -66,13 +66,14 @@ def main():
parser.add_argument('name',help='Full name')
args = parser.parse_args()

rp = setDatabasePassword(args.user)
rp = ''.join(choice(ascii_letters + digits) for i in range(255))

createDatabaseAccount(b.rPasswd,b.dbHost,b.dbPort,args.user,rp)
createDatabaseAndPrivileges(b.rPasswd,b.dbHost,b.dbPort,args.user,rp,args.user + '_default')
createDatabaseSchema(b.cairisRoot,b.dbHost,b.dbPort,args.user,rp,args.user + '_default')

db.create_all()
user_datastore.create_user(email=args.user, password=args.password, name=args.name)
user_datastore.create_user(email=userName, password=passWd,dbtoken=rp,name = 'Default user')
db.session.commit()

if __name__ == '__main__':
Expand Down
5 changes: 2 additions & 3 deletions cairis/core/BorgFactory.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,8 @@
import logging
import json
from cairis.tools.GraphicsGenerator import GraphicsGenerator
from .MySQLDatabaseProxy import MySQLDatabaseProxy
from .MySQLDatabaseProxy import MySQLDatabaseProxy,dbtoken
from .ARM import ARMException
from .PasswordManager import getDatabasePassword

def testUploadDirectory(uploadDir,logger):

Expand Down Expand Up @@ -124,7 +123,7 @@ def initialise(user='cairis_test',db='cairis_test_default'):
db='cairis_test_default'
else:
b.dbUser = user
dbPasswd = getDatabasePassword(user)
dbPasswd = dbtoken(b.rPasswd,b.dbHost,b.dbPort,user)
b.dbPasswd = dbPasswd
b.dbName = db
b.dbProxy = GUIDatabaseProxy(user=user,passwd=b.dbPasswd,db=db)
Expand Down
22 changes: 22 additions & 0 deletions cairis/core/MySQLDatabaseProxy.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,28 @@

__author__ = 'Shamal Faily, Robin Quetin, Nathan Jenkins'

def dbtoken(rPasswd,dbHost,dbPort,dbUser):
try:
rootConn = MySQLdb.connect(host=dbHost,port=int(dbPort),user='root',passwd=rPasswd)
rootCursor = rootConn.cursor()
sqlTxt = 'select dbtoken from cairis_user.auth_user where email="' + dbUser + '"'
rs = rootCursor.execute(sqlTxt)
if (rs != 1):
exceptionText = 'MySQL error getting token for ' + dbUser
raise DatabaseProxyException(exceptionText)
else:
t = rootCursor.fetchone()
rootCursor.close()
rootConn.close()
return t[0]
except OperationalError as e:
exceptionText = 'MySQL error getting token for ' + dbUser + ' (message:' + format(e) + ')'
raise DatabaseProxyException(exceptionText)
except _mysql_exceptions.DatabaseError as e:
id,msg = e
exceptionText = 'MySQL error getting token for ' + dbUser + ' (id:' + str(id) + ',message:' + msg
raise DatabaseProxyException(exceptionText)

def createDatabaseSchema(rootDir,dbHost,dbPort,dbUser,dbPasswd,dbName):
srcDir = rootDir + '/sql'
initSql = srcDir + '/init.sql'
Expand Down
34 changes: 0 additions & 34 deletions cairis/core/PasswordManager.py

This file was deleted.

3 changes: 1 addition & 2 deletions cairis/daemon/main/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,14 @@
PersonaCharacteristicController, TaskCharacteristicController, ObjectDependencyController, ArchitecturalPatternController, SecurityPatternController, ValueTypeController, TemplateGoalController, TemplateAssetController,TemplateRequirementController, LocationsController, RiskLevelController, TraceController, SummaryController, ConceptReferenceController, DataFlowController, DirectoryController,TrustBoundaryController, VersionController, ValidationController
from cairis.daemon.main import main, api
from cairis.tools.SessionValidator import get_session_id
from cairis.core.PasswordManager import getDatabasePassword


__author__ = 'Robin Quetin, Shamal Faily'

def set_dbproxy(dbUser,userName):
b = Borg()
dbName = dbUser + '_default'
dbPasswd = getDatabasePassword(dbUser)
dbPasswd = current_user.dbtoken

db_proxy = MySQLDatabaseProxy(user=dbUser,passwd=dbPasswd,db=dbName)
pSettings = db_proxy.getProjectSettings()
Expand Down
3 changes: 2 additions & 1 deletion cairis/daemon/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,9 @@ class User(db.Model, UserMixin):
__tablename__ = 'auth_user'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(255), unique=True)
name = db.Column(db.String(255))
password = db.Column(db.String(255))
dbtoken = db.Column(db.String(255))
name = db.Column(db.String(255))
active = db.Column(db.Boolean())
confirmed_at = db.Column(db.DateTime())
roles = db.relationship('Role', secondary=roles_users, backref=db.backref('users', lazy='dynamic'))
37 changes: 0 additions & 37 deletions cairis/test/test_PasswordManager.py

This file was deleted.

9 changes: 5 additions & 4 deletions cairis/tools/quickSetup.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,10 @@
import MySQLdb
import _mysql_exceptions
from cairis.core.MySQLDatabaseProxy import createDatabaseAccount, createDatabaseAndPrivileges, createDatabaseSchema
from cairis.core.PasswordManager import setDatabasePassword
import binascii
from random import choice
from string import ascii_letters, digits


__author__ = 'Shamal Faily'

Expand All @@ -49,11 +51,10 @@ def quick_setup(dbHost,dbPort,dbRootPassword,tmpDir,rootDir,imageDir,configFile,
from cairis.bin.add_cairis_user import user_datastore, db

db.create_all()

user_datastore.create_user(email=userName, password=passWd,name = 'Default user')
rp = ''.join(choice(ascii_letters + digits) for i in range(255))
user_datastore.create_user(email=userName, password=passWd,dbtoken=rp,name = 'Default user')
db.session.commit()

rp = setDatabasePassword(userName)
createDatabaseAccount(dbRootPassword,dbHost,dbPort,userName,rp)
createDatabaseAndPrivileges(dbRootPassword,dbHost,dbPort,userName,rp,userName + '_default')
createDatabaseSchema(rootDir,dbHost,dbPort,userName,rp,userName + '_default')
Expand Down
5 changes: 0 additions & 5 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,6 @@ RUN apt-get install -y apache2-dev
RUN apt-get install -y poppler-utils
RUN apt-get install -y apt-transport-https
RUN apt-get install -y ca-certificates
RUN apt-get install -y python-dbus
RUN apt-get install -y gnome-keyring
RUN apt-get install -y libffi-dev
RUN apt-get install -y libssl-dev
RUN apt-get install -y python3-keyring

COPY requirements.txt /
COPY wsgi_requirements.txt /
Expand Down
2 changes: 0 additions & 2 deletions docker/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,3 @@ mako>=1.0.4
lxml>=3.6.4
openpyxl>=2.4.0
bcrypt>=3.1.6
secretstorage>=2.3.1
keyring>=3.7.4
2 changes: 0 additions & 2 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,3 @@ lxml>=3.6.4
openpyxl>=2.4.0
SQLAlchemy>=1.2.0b3
bcrypt>=3.1.6
secretstorage>=2.3.1
keyring>=3.7.4

0 comments on commit 1789574

Please sign in to comment.