def sign_in(request): v_return = {} v_return['v_data'] = -1 v_return['v_error'] = False v_return['v_error_id'] = -1 json_object = json.loads(request.POST.get('data', None)) username = json_object['p_username'] pwd = json_object['p_pwd'] database = OmniDatabase.Generic.InstantiateDatabase( 'sqlite', '', '', settings.OMNIDB_DATABASE, '', '', '0', '', True) table = database.v_connection.Query(''' select u.user_id, u.password, t.theme_id, t.theme_name, t.theme_type, u.editor_font_size, (case when u.chat_enabled is null then 1 else u.chat_enabled end) as chat_enabled, (case when u.super_user is null then 0 else u.super_user end) as super_user, u.user_key from users u, themes t where u.theme_id = t.theme_id and u.user_name = '{0}' '''.format(username)) if len(table.Rows) > 0: cryptor = Utils.Cryptor('omnidb', 'iso-8859-1') pwd_decrypted = cryptor.Decrypt(table.Rows[0]['password']) if pwd_decrypted == pwd: #creating session key to use it request.session.save() logger.info('User "{0}" logged in.'.format(username)) v_session = Session(table.Rows[0]["user_id"], username, database, table.Rows[0]["theme_name"], table.Rows[0]["theme_type"], table.Rows[0]["theme_id"], table.Rows[0]["editor_font_size"], int(table.Rows[0]["chat_enabled"]), int(table.Rows[0]["super_user"]), cryptor, request.session.session_key) v_session.RefreshDatabaseList() request.session['omnidb_session'] = v_session if not request.session.get('cryptor'): request.session['cryptor'] = cryptor v_return['v_data'] = len(v_session.v_databases) return JsonResponse(v_return)
def check_session(request): # User is authenticated, check if user details object exists. try: user_details = UserDetails.objects.get(user=request.user) # User details does not exist, create it. except Exception: user_details = UserDetails(user=request.user) user_details.save() # Invalid session if not request.session.get("omnidb_session"): # creating session key to use it request.session.save() v_session = Session( request.user.id, request.user.username, "light", user_details.font_size, request.user.is_superuser, request.session.session_key, user_details.csv_encoding, user_details.csv_delimiter, ) request.session["omnidb_session"] = v_session return redirect( settings.PATH + f"/workspace?{settings.SESSION_COOKIE_NAME}={request.GET[settings.SESSION_COOKIE_NAME]}" )
def sign_in_automatic(request, username, pwd): token = request.GET.get('token', '') valid_token = custom_settings.APP_TOKEN if valid_token and token != valid_token: return -1 database = OmniDatabase.Generic.InstantiateDatabase( 'sqlite', '', '', settings.OMNIDB_DATABASE, '', '', '0', '', True) table = database.v_connection.Query(''' select u.user_id, u.password, t.theme_id, t.theme_name, t.theme_type, u.editor_font_size, (case when u.chat_enabled is null then 1 else u.chat_enabled end) as chat_enabled, (case when u.super_user is null then 0 else u.super_user end) as super_user, u.csv_encoding, u.csv_delimiter from users u, themes t where u.theme_id = t.theme_id and u.user_name = '{0}' '''.format(username)) if len(table.Rows) > 0: cryptor = Utils.Cryptor('omnidb', 'iso-8859-1') pwd_decrypted = cryptor.Decrypt(table.Rows[0]['password']) if pwd_decrypted == pwd: #creating session key to use it try: request.session.save() except Exception as exc: request.session.create() logger.info('User "{0}" logged in.'.format(username)) v_session = Session( table.Rows[0]["user_id"], username, database, table.Rows[0]["theme_name"], table.Rows[0]["theme_type"], table.Rows[0]["theme_id"], table.Rows[0]["editor_font_size"], int(table.Rows[0]["chat_enabled"]), int(table.Rows[0]["super_user"]), cryptor, request.session.session_key, table.Rows[0]["csv_encoding"], table.Rows[0]["csv_delimiter"]) #v_session.RefreshDatabaseList() request.session['omnidb_session'] = v_session if not request.session.get('cryptor'): request.session['cryptor'] = cryptor return len(v_session.v_databases) return -1
def create_user_session(request, user, user_details): #creating session key to use it request.session.save() v_session = Session(user.id, user.username, 'light', user_details.font_size, request.user.is_superuser, request.session.session_key, user_details.csv_encoding, user_details.csv_delimiter) request.session['omnidb_session'] = v_session
def get_or_create_omnidb_session(django_session=Depends(get_django_session), user_details=Depends(get_user_detail)): omnidb_session = django_session.get("omnidb_session") if not omnidb_session: # creating session key to use it django_session.save() omnidb_session = Session( user_details.user.id, user_details.user.username, "light", user_details.font_size, user_details.user.is_superuser, django_session.session_key, user_details.csv_encoding, user_details.csv_delimiter, ) django_session["omnidb_session"] = omnidb_session yield omnidb_session django_session["omnidb_session"] = omnidb_session
def check_session(request): # User is authenticated, check if user details object exists. try: user_details = UserDetails.objects.get(user=request.user) # User details does not exist, create it. except Exception: user_details = UserDetails(user=request.user) user_details.save() #Invalid session if not request.session.get('omnidb_session'): #creating session key to use it request.session.save() v_session = Session(request.user.id, request.user.username, 'light', user_details.font_size, request.user.is_superuser, request.session.session_key, user_details.csv_encoding, user_details.csv_delimiter) request.session['omnidb_session'] = v_session return redirect(settings.PATH + '/workspace')