#Region " Access control / user management"
Private Shared _UnauthorizedUserToken As New UserToken("(neautorizovaný)", "---", Nothing)
Private Shared _UserToken As UserToken = _UnauthorizedUserToken
Public Shared ReadOnly Property User() As UserToken
Get
Return _UserToken
End Get
End Property
Public Shared Function LogonUser(ByVal logon As String, ByVal password As String) As Boolean
Dim Cmd As New SqlCommand("ENVI_LaMarvin_LookupUser", App.Connection)
Cmd.CommandType = CommandType.StoredProcedure
Cmd.Parameters.Add("@UserAccount", logon)
Dim PwdParam As SqlParameter = Cmd.Parameters.Add("@UserPassword", password)
If (password Is Nothing) OrElse (password.Length = 0) Then
PwdParam.Value = DBNull.Value
End If
Dim UserTable As DataTable = App.ExecuteStoredProcedure(Cmd).Tables(0)
If UserTable.Rows.Count = 0 Then
' Taky user tam nie je.
_UserToken = _UnauthorizedUserToken
Return False
Else
With UserTable.Rows(0)
_UserToken = New UserToken(CStr(.Item("UserName")), CStr(.Item("UserCode")), CStr(.Item("UserToken")))
End With
Return True
End If
End Function
Public Class UserToken
Private _Name, _Code, _Token As String
Private Const MinTokenLength As Integer = 6
Public Sub New(ByVal name As String, ByVal code As String, ByVal token As String)
_Name = Coalesce(name)
_Code = Coalesce(code)
_Token = Coalesce(token)
End Sub
Public ReadOnly Property Name() As String
Get
Return _Name
End Get
End Property
Public ReadOnly Property Code() As String
Get
Return _Code
End Get
End Property
Public Overrides Function ToString() As String
Return String.Format("{0} ({1})", _Name, _Code)
End Function
Public ReadOnly Property NoAccess() As Boolean
Get
Return (_Token.Length < MinTokenLength)
End Get
End Property
Public ReadOnly Property CanModifyDataAttributes() As Boolean
Get
Return (_Token.Length >= MinTokenLength) AndAlso _
((_Token.Chars(MinTokenLength - 1) = "1"c) Or (_Token.Chars(MinTokenLength - 1) = "2"c))
End Get
End Property
Public ReadOnly Property CanModifyDataValues() As Boolean
Get
Return (_Token.Length >= MinTokenLength) AndAlso (_Token.Chars(MinTokenLength - 1) = "1"c)
End Get
End Property
Private Function Coalesce(ByVal s As String) As String
If s Is Nothing Then
Return String.Empty
Else
Return s
End If
End Function
End Class
#End Region