Noname > 15-08-10, 01:48 PM
Public username as string
Private Sub cbbUsername_AfterUpdate()
Me.txtPassTemp.Value = cbbUserName.Column(1)
‘ lấy về password
End Sub
Private Sub cmdLogin_Click()
If Me.txtPassWord.Value = Me.txtPassTemp.Value Then
Username = Me.cbbUserName
MsgBox "Welcom To " & Username
DoCmd.OpenForm "frmMain"
DoCmd.Close acForm, "frmLogin"
Else
MsgBox "Login Fail, check your Username and your password"
End If
End Sub
Private Sub CmdGuest_Click()
Username = "Guest"
MsgBox "Welcom To " & Username
DoCmd.OpenForm "frmMain"
DoCmd.Close acForm, "frmLogin"
End Sub
Chuẩn bị table:
- Table cần có là danh sách user: tblDSUser(ID,pass)
- Table lưu cấp của các user: tblWorkGroup(WgLevel, WgName,user)
Trong đó : username là khóa ngoại liên kết với tblDSUser
tblWorkGroup(WgLevel, WgName,user)
Function checkuser() As Integer
On Error GoTo Err ' nếu user vào trực tiếp bằng quyền guest thì cho level là 0
Dim rs1 As Recordset
Dim sql As String
sql = " select max(WGlevel) from tblWorkGroup where user= '" & Username & "'"
Set rs1 = CurrentDb.OpenRecordset(sql)
rs1.MoveFirst
checkuser = rs1(0).Value
Exit Function
Err:
checkuser = 0
Exit Function
End Function
Private Sub cmdAdmin_Click()
Dim userRequest As String ‘ biến yêu cầu user tối thiểu
userRequest = 9
If userRequest <= checkuser Then
MsgBox "Xin chao ban đa dang nhap vao quyen admin"
Else
MsgBox "ban khonn duoc dang nhap function nay"
End If
End Sub
Private Sub cmdUser_Click()
Dim userRequest As String
userRequest = 8
If userRequest <= checkuser Then
MsgBox "Xin chao ban da dang nhap vao quyen user"
Else
MsgBox "ban khong duoc dang nhap function nay"
End If
End Sub
Private Sub CmdGuest_Click()
Dim userRequest As String
userRequest = 0
If userRequest <= checkuser Then
MsgBox "Xin chao dang nhap vao quyen khach"
Else
MsgBox "ban khogn duoc dang nhap function nay"
End If
End Sub
Noname > 15-08-10, 01:48 PM
ncxn > 13-09-10, 05:47 PM
Noname > 13-09-10, 08:47 PM
(13-09-10, 05:47 PM)ncxn Đã viết: hì hì, hổng có chương trình gì mà login vô có dzụ Admin, user và guest é. Ngừ ta chỉ làm txtPass và txtUser và cmdLogin , nếu chương trình lớn hơn thì thêm cái cbox để chọn database
-----------
Về yêu cầu phân quyền ứng dụng thì ông suy nghĩ theo hướng này nà:
1. Tập hợp toàn bộ các ứng đối tượng trong chương trình( form, report, query, table) và các thuộc tính do người viết chương trình định nghĩa: xem, thêm, sửa, xóa . Đó là cái cơ bản nhất khi muốn viết hệ thống phân quyền
2. Lập luận rằng mỗi một user khi vào chương trình được cấp cho các thuộc tính tương ứng với đối tượng nào đó thôi
ví dụ: userA được quyền xem, thêm, sửa fromX thì khi user này login vào ( cấp cho nó cái biến toàn cục currentUser = userA) khi đó chương trình sẽ tạo ra tem_Query (query có hiệu lực khi user còn hoạt động trên Clien) có dạng userA(FormX, xem=true, thêm= true, sửa = true, xóa=false)
3. Khi đó ta tạo một function (curentUser) để xử lý các thuộc tính xem, sửa, thêm, xóa là xong . Chú ý rằng function này viết dựa trên cái tem_Query kia là được.
-----------
hì hì,mình cũng chưa làm lần nào nhưng thấy các chương trình họ đều làm theo hướng này
ncxn > 14-09-10, 10:46 AM
Noname > 14-09-10, 11:25 AM
(14-09-10, 10:46 AM)ncxn Đã viết: Group thì chỉ cần viết cái function kia dành cho Group rồi add user vào Group là được.Vấn đề không phải là ở Access mà là ở giải thuật. Nếu chỉ thao tác thuần túy trên dữ liệu thì mình nghĩ Access rất nhanh và mạnh rồi! (còn bảo mật thì đành nhờ bác SQL server làm back-end thôi
Lúc này User sẽ thừa hưởng toàn bộ các quyền được cấp cho Group , hơn nữa 1 user có thể nằm trong nhiều Group (kiêm nhiệm) và có thể không nằm trong Gr nào nhưng vẫn được cấp quyền sử dụng
Cái này có lợi thế là : người quản trị có thể tạo luôn group -- cấp quyền cho nó xong rồi tạo user add vào group là xong
------Hì hì cái ncxn muốn làn người dùng có thể thao tác hoàn toàn chứ không làm sẵn cố định một chức năng nào. (Trừ khi điều đó là bắt buộc)
ncnx cũng mới tìm hiểu về access nhưng xem ra hạn chế cũng không nhỏ nhỉ.
Đang mò cái vụ menu : suy nghĩ thế này
Tạo một table chứa dữ liệu các menu
tblMenu(ID, level, name, label, object, object_type, action, action_type, enable)
- level:
----1
------11
------12
----------121
----------122
-----2
... Nói chung thuật toán này cũng không khó
- name, label : thì chỉ là tên của nó thôi
- object, object_type : ví dụ fromA thì type là from
- action, action_type : ví dụ fromA có action là click và type là view (chẳn hạn nếu report thì cho print luôn)
- enable (true/false): nếu true thì user được cấp quyền sẽ thấy menu này (field này sẽ update theo bản phân quyền của user khi user login vào chương trình). True: cho hiện menu/ false: ngược lại
---------
Mấy cái object, type sẽ tự động tập hợp khi user tạo menu mới
---------
Đó như vậy người dùng cũng có thể tạo/xóa menu cho riêng mình hìhi
Khả thi không nhỉ
no1blue > 08-12-10, 12:01 AM
haquocquan > 13-12-10, 11:52 PM
(08-12-10, 12:01 AM)no1blue Đã viết: trong bài này
em làm xong hết cái form login ấy
thì cho dù em nhập kỉu j thì kỉu
nó cũng báo Login Fail, check your Username and your password
mà dòng nào nghĩa là sao em ko hỉu ???
Trong đó : username là khóa ngoại liên kết với tblDSUser
no1blue > 14-12-10, 12:25 AM
Noname > 14-12-10, 12:31 AM