コード例 #1
0
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)
コード例 #2
0
ファイル: login.py プロジェクト: shabbywu/OmniDB
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]}"
    )
コード例 #3
0
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
コード例 #4
0
ファイル: login.py プロジェクト: zyclove/OmniDB
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
コード例 #5
0
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
コード例 #6
0
ファイル: login.py プロジェクト: zyclove/OmniDB
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')