Попытка проверить информацию на основе обеспечительных прав - PullRequest
0 голосов
/ 15 октября 2019

Попытка сделать определенные текстовые поля на моей веб-странице видимыми, основываясь на правах, которые пользователь имеет из таблицы прав пользователя.

Вот моя хранимая процедура, которая называется

ALTER PROCEDURE [dbo].[uc_OneAPortalUserAccess]
    @intUserID as INT
    ,@intInvoiceShipmentID as INT

AS

BEGIN

SELECT TOP 1
    i.InvoiceShipmentID, p.ProjectID, OneA.UserID, OneA.ViewAccess, OneA.EditAccess, OneA.ApproveAccess

FROM 
    KitUnit ku
    JOIN ProjectAccount pa on pa.ProjectAccountID = ku.ProjectAccountID
    JOIN Project p on p.ProjectID = pa.ProjectID
    JOIN InvoiceShipment i on i.InvoiceShipmentID = ku.InvoiceShipmentID
    JOIN OneAPortalAccess OneA on P.ProjectID = OneA.ProjectID
    JOIN Users U on U.UserID = OneA.UserID
WHERE 
    i.InvoiceShipmentID = @intInvoiceShipmentID
    and OneA.UserID = @intUserID

END

Вот мойкод vb.net

Dim blnView As Boolean
Dim blnEdit As Boolean
Dim blnApprove As Boolean
Dim sqlp(1) As SqlParameter

sqlp(0) = DataBase.CreateSQLParam("@intInvoiceShipmentID", SqlDbType.Int, intInvoiceShipmentId)
sqlp(1) = DataBase.CreateSQLParam("@intUserID", SqlDbType.Int, intUserID)

DataBase.ExecuteNonQueryParam( _
       "uc_OneAPortalUserAccess", _
       CommandType.StoredProcedure, _
       sqlp)

'If user has view only access
If blnView = True Then
    btnSaveTop.Visible = False
    btnSaveBottom.Visible = False
    btnApproveBottom.Visible = False
    btnApproveTop.Visible = False
End If

Я не знаю, как вернуть свои поля доступа и отобразить их

1 Ответ

0 голосов
/ 15 октября 2019

Я использовал шаблон, который мне более знаком. Хранение объектов базы данных локально позволяет вам контролировать их закрытие и удаление. Using...End Using блоки позаботятся об этой работе.

Я создал DataTable, Connection и Command. Затем запустил DataReader для Load the DataTable. Значения, которые появляются в вашем операторе Select, будут в DataTable.

. Мне не нравится смешивать код интерфейса пользователя с кодом доступа к данным. Это Sub может быть Function, возвращающим экземпляр класса или структуры Approval. Я подозреваю, что вы включили код интерфейса для краткости.

Private Sub OPCode(intInvoiceShipmentId As Integer, intUserID As Integer)
    Dim blnView As Boolean
    Dim blnEdit As Boolean
    Dim blnApprove As Boolean
    Using dt As New DataTable
        Using cn As New SqlConnection("Your connection string"),
        cmd As New SqlCommand("uc_OneAPortalUserAccess", cn)
            cmd.CommandType = CommandType.StoredProcedure
            cmd.Parameters.Add("@intInvoiceShipmentID", SqlDbType.Int).Value = intInvoiceShipmentId
            cmd.Parameters.Add("@intUserID", SqlDbType.Int).Value = intUserID
            cn.Open()
            dt.Load(cmd.ExecuteReader)
        End Using
        If dt.Rows.Count > 0 Then
            blnView = CBool(dt.Rows(0)("ViewAccess"))
            blnEdit = CBool(dt.Rows(0)("EditAccess"))
            blnApprove = CBool(dt.Rows(0)("ApproveAccess"))
        Else
            blnView = False
            blnEdit = False
            blnApprove = False
        End If
    End Using
    'If user has view only access
    If blnView = True Then
        btnSaveTop.Visible = False
        btnSaveBottom.Visible = False
        btnApproveBottom.Visible = False
        btnApproveTop.Visible = False
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...