Tặng các bạn File đăng nhập, Admin có thể tạo User mới.

Liên hệ QC

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia
17/8/08
Bài viết
8,609
Được thích
16,670
Giới tính
Nam
attachment.php


Do nhiều bạn có nhu cầu rất cao về bảo mật nên thường có ý muốn gì đó cho việc riêng tư, hiểu được điều đó tôi đã tạo ra một file (mấy ngày trời) test đi test lại đổi đi đổi lại xem có phát sinh lỗi gì không.

Hôm nay, tôi thấy tương đối ổn định nên muốn gửi lên tặng các bạn tham khảo. Dĩ nhiên, ngoài việc khóa Excel của chính Excel mới có thể gọi là bảo mật cao, thì mọi việc Protect (Sheet, Structure, VBA) đều không là vấn đề gì đối với các cao thủ. Song đối với những người khác thì cũng khó mà bẻ khóa được. Ngoài ra, file này được tạo ra cũng khá công phu nên nhìn vào ta có thể thấy nó khá "rồ" và "hoành tá tràng". Mặc dù tính bảo mật không mấy là cao, nhưng tính thẩm mỹ của nó cũng ít nhiều làm người khác hài lòng. Nếu các bạn biết thiết kế, các bạn sẽ phát triển nó tốt hơn.

Sheet HOME Khi chỉ mỗi Admin đăng nhập lần đầu tiên:

attachment.php


Sheet HOME sau khi Admin tạo thêm sheet/User:

attachment.php


Nếu bạn là người sở hữu file này, tôi tạm gọi là Admin, bạn có thể tạo thêm 12 sheet cho riêng mình sử dụng và 150 sheet cho mỗi User. Ngoài ra file có 3 sheet mặc định, không được xóa: HOME, ADMIN, AD_SETTING.

attachment.php


Bạn có thể thay đổi tên của tất cả các sheet, ngoại trừ sheet HOME, thông qua công cụ reset.

attachment.php


Bạn cũng có thể thêm User (150 user) thông qua công cụ create user, mỗi sheet đều có nút Home để quay về sheet Home.

Bất cứ sheet nào bạn xóa thì khi thêm sheet, vị trị nào bị xóa ở giữa các sheet thì sheet mới sẽ chèn vào đó, ví dụ có User1, User3 mà chưa có User2 (do bị xóa) thì khi thêm sheet nó sẽ tạo ra sheet User2.

attachment.php


Bạn cũng có thể xóa User/Sheet, thông qua công cụ delete, ngoại trừ 3 sheet mặc định.

attachment.php


Mỗi User kể cả Admin khi đăng nhập lần đầu tiên đều phải thay đổi User Name và Password.

User có thể thay đổi User và Password bất cứ lúc nào.

attachment.php


Hình ảnh mang tính chất minh họa, file sẽ gửi ở bài sau.
 

File đính kèm

  • JoinFile.jpg
    JoinFile.jpg
    52.9 KB · Đọc: 2,234
  • MenuDelete.jpg
    MenuDelete.jpg
    29.7 KB · Đọc: 2,247
  • MenuCreate.jpg
    MenuCreate.jpg
    44.8 KB · Đọc: 2,163
  • QuyenAdmin.jpg
    QuyenAdmin.jpg
    33 KB · Đọc: 2,135
  • UserReset.jpg
    UserReset.jpg
    72.3 KB · Đọc: 2,148
  • AdminReset.jpg
    AdminReset.jpg
    99.3 KB · Đọc: 2,121
  • AdminDelete.jpg
    AdminDelete.jpg
    60.8 KB · Đọc: 2,098
  • CreatUser.jpg
    CreatUser.jpg
    48.7 KB · Đọc: 2,128
Do tính phức tạp nên cũng không lường trước được những tình huống, vì thế khi tải file về, ai mà phát hiện ra lỗi gì thì gửi lỗi đó lên đây đề cùng nhau xử lý nhé.

Trong file tôi lường khả năng Share Workbook cao nên tôi chỉ dùng biến mảng để ghi nhận tên và quyền admin nên trong quá trình thực hiện, nếu cái gì đó phát sinh ra lỗi, ngay lập tức biến này sẽ bị giải phóng. Ngoại trừ chọn sheet qua lại (mở sẳn) thì không thực hiện được các nút lệnh nào khác (có thông báo), trong trường hợp này, nên thoát file và đăng nhập lại. Rất tiếc cho lỗi bất tiện này!

Mọi password đều là: HoangTrongNghia

Khi tải file về, sau khi đăng nhập, bạn phải Unprotect Sheet (HOME & AD_SETTING), UnProtect Workbook và đăng nhập vào VBA, thay đổi password VBA. Đồng thời thay đổi Hằng số này tại Module: mdlPublic

Public Const pubPwd As String = "HoangTrongNghia"

Bạn đổi tên Pass lại thay cho "HoangTrongNghia".

Như vậy, sau khi đổi xong thì bạn chính là Admin rồi, bạn thao tác gì đó (tạo user) thì các việc sheet hay workbook protect đã mang pass của bạn. Còn không biết thao tác thì cứ thế mà dùng vậy.

Mặc định khi mở file là ADMIN và password là Admin.

Hy vọng các bạn cảm thấy tiện lợi cho công việc của mình.

===============================

Mới đổi file có thêm nút Re-Sign In, nếu giữa chừng bị lỗi phải đăng nhập lại thì không cần phải thoát file mà chỉ cần bấm nút!

attachment.php
 

File đính kèm

  • QuyenDangNhap.xls
    203 KB · Đọc: 1,004
  • ReSign.jpg
    ReSign.jpg
    31.2 KB · Đọc: 670
Lần chỉnh sửa cuối:
Upvote 0
Em mong một ngày gần nhất để gặp anh Nghĩa ngồi tâm sự nek sdt của em : 01694376085
 
Upvote 0
Do tính phức tạp nên cũng không lường trước được những tình huống, vì thế khi tải file về, ai mà phát hiện ra lỗi gì thì gửi lỗi đó lên đây đề cùng nhau xử lý nhé.

Trong file tôi lường khả năng Share Workbook cao nên tôi chỉ dùng biến mảng để ghi nhận tên và quyền admin nên trong quá trình thực hiện, nếu cái gì đó phát sinh ra lỗi, ngay lập tức biến này sẽ bị giải phóng. Ngoại trừ chọn sheet qua lại (mở sẳn) thì không thực hiện được các nút lệnh nào khác (có thông báo), trong trường hợp này, nên thoát file và đăng nhập lại. Rất tiếc cho lỗi bất tiện này!

Mọi password đều là: HoangTrongNghia

Khi tải file về, sau khi đăng nhập, bạn phải Unprotect Sheet (HOME & AD_SETTING), UnProtect Workbook và đăng nhập vào VBA, thay đổi password VBA. Đồng thời thay đổi Hằng số này tại Module: mdlPublic

Public Const pubPwd As String = "HoangTrongNghia"

Bạn đổi tên Pass lại thay cho "HoangTrongNghia".

Như vậy, sau khi đổi xong thì bạn chính là Admin rồi, bạn thao tác gì đó (tạo user) thì các việc sheet hay workbook protect đã mang pass của bạn. Còn không biết thao tác thì cứ thế mà dùng vậy.

Mặc định khi mở file là ADMIN và password là Admin.

Hy vọng các bạn cảm thấy tiện lợi cho công việc của mình.

===============================

Mới đổi file có thêm nút Re-Sign In, nếu giữa chừng bị lỗi phải đăng nhập lại thì không cần phải thoát file mà chỉ cần bấm nút!

attachment.php

Em thấy nếu như khi thêm tên sheet theo tên tự đặt của riêng thì hay hơn anh ah. Cám ơn A.
 
Upvote 0
Em thấy nếu như khi thêm tên sheet theo tên tự đặt của riêng thì hay hơn anh ah. Cám ơn A.
Mặc định nó là vậy, nhưng bạn hoặc người dùng có thể Reset lại, User Name đó chính là tên sheet, khi bạn thay đổi nó sẽ thay đổi theo. Nhớ là đừng làm thủ công, làm bằng nút lệnh hết nhé!
 
Upvote 0
minh khong mo duoc file pass la gi admin khonh duoc
Do tính phức tạp nên cũng không lường trước được những tình huống, vì thế khi tải file về, ai mà phát hiện ra lỗi gì thì gửi lỗi đó lên đây đề cùng nhau xử lý nhé.

Trong file tôi lường khả năng Share Workbook cao nên tôi chỉ dùng biến mảng để ghi nhận tên và quyền admin nên trong quá trình thực hiện, nếu cái gì đó phát sinh ra lỗi, ngay lập tức biến này sẽ bị giải phóng. Ngoại trừ chọn sheet qua lại (mở sẳn) thì không thực hiện được các nút lệnh nào khác (có thông báo), trong trường hợp này, nên thoát file và đăng nhập lại. Rất tiếc cho lỗi bất tiện này!

Mọi password đều là: HoangTrongNghia

Khi tải file về, sau khi đăng nhập, bạn phải Unprotect Sheet (HOME & AD_SETTING), UnProtect Workbook và đăng nhập vào VBA, thay đổi password VBA. Đồng thời thay đổi Hằng số này tại Module: mdlPublic

Public Const pubPwd As String = "HoangTrongNghia"

Bạn đổi tên Pass lại thay cho "HoangTrongNghia".

Như vậy, sau khi đổi xong thì bạn chính là Admin rồi, bạn thao tác gì đó (tạo user) thì các việc sheet hay workbook protect đã mang pass của bạn. Còn không biết thao tác thì cứ thế mà dùng vậy.

Mặc định khi mở file là ADMIN và password là Admin.

Hy vọng các bạn cảm thấy tiện lợi cho công việc của mình.

===============================

Mới đổi file có thêm nút Re-Sign In, nếu giữa chừng bị lỗi phải đăng nhập lại thì không cần phải thoát file mà chỉ cần bấm nút!

attachment.php
 
Upvote 0
Chưa hiểu ý của bạn Nghĩa lắm, có phải là từ giờ trở đi, muốn bảo mật file excel thì phải dùng file của bạn như là template mẫu rồi phát triển ý đồ trên file này
 
Upvote 0
Chưa hiểu ý của bạn Nghĩa lắm, có phải là từ giờ trở đi, muốn bảo mật file excel thì phải dùng file của bạn như là template mẫu rồi phát triển ý đồ trên file này
Đúng là như vậy, các bạn cứ tùy biến và phát triển trên nền tảng có sẳn, sheet các bạn tạo ra các bạn có thể làm CSDL tùy thích.
 
Upvote 0
Em sử dụng và có một số chỗ vướng mắc, a Nghĩa xem lại dùm:
- Khi đăng nhập bằng admin xong nếu sử dung re-sign in đăng nhập vào user thì vẫn vào được ADMIN và AD-SETTING, chỉ có các sheet ADMIN_001... mới tạo là không vào được. Muốn user không vào được 2 sheet đó thì phải thoát hẳn file đăng nhập lại bằng user thì mới được.
- Em muốn các user và các Admin dùng chung một số sheet nào đó thì em phải làm sao???? Ví dụ trong file em gửi, nếu em muốn giữ nguyên các sheet đã tạo, sau đó em muốn tất các các admin khi đăng nhập thì sẽ đăng nhập chung vào 1 trang chủ có đầy đủ button link đến các sheet, còn user thì đăng nhập vào trang chủ khác chỉ có button để link đến sheet xem báo cáo thôi. Không biết anh có thể làm thêm một mục đó là khi tạo thêm một ad hay một user thì sẽ được chọn group cho user đó. Mỗi group khi đăng nhập vào và ấn button của user ở trang home sẽ được link đến một trang chủ chung cho Group đó. Ý tưởng em thế thôi chứ e ko biết có làm được ko, cứ nói đại ạ.
- Nếu không thể thì nhờ anh hướng dẫn giúp em làm sao có thể áp dụng file của anh vào file mà em gửi kèm theo. Trong đó em muốn admin có thể xem, sửa được các sheet, còn user thì chỉ xem được 2 sheet báo cáo mà thôi.

File của em đây ạ.
 
Upvote 0
Em sử dụng và có một số chỗ vướng mắc, a Nghĩa xem lại dùm:
- Khi đăng nhập bằng admin xong nếu sử dung re-sign in đăng nhập vào user thì vẫn vào được ADMIN và AD-SETTING, chỉ có các sheet ADMIN_001... mới tạo là không vào được. Muốn user không vào được 2 sheet đó thì phải thoát hẳn file đăng nhập lại bằng user thì mới được.
- Em muốn các user và các Admin dùng chung một số sheet nào đó thì em phải làm sao???? Ví dụ trong file em gửi, nếu em muốn giữ nguyên các sheet đã tạo, sau đó em muốn tất các các admin khi đăng nhập thì sẽ đăng nhập chung vào 1 trang chủ có đầy đủ button link đến các sheet, còn user thì đăng nhập vào trang chủ khác chỉ có button để link đến sheet xem báo cáo thôi. Không biết anh có thể làm thêm một mục đó là khi tạo thêm một ad hay một user thì sẽ được chọn group cho user đó. Mỗi group khi đăng nhập vào và ấn button của user ở trang home sẽ được link đến một trang chủ chung cho Group đó. Ý tưởng em thế thôi chứ e ko biết có làm được ko, cứ nói đại ạ.
- Nếu không thể thì nhờ anh hướng dẫn giúp em làm sao có thể áp dụng file của anh vào file mà em gửi kèm theo. Trong đó em muốn admin có thể xem, sửa được các sheet, còn user thì chỉ xem được 2 sheet báo cáo mà thôi.

File của em đây ạ.
Tôi chưa nói gì đến file của bạn, tôi nói file tôi trước cái đã.

1) ADMIN, ngoài việc có sẳn 2 sheet ADMIN & ADMIN_SET, có thể tạo thêm 12 sheet cho chính ADMIN sử dụng. Vì thế khi ADMIN đăng nhập, và chỉ có ADMIN mới xem được nhiều sheet của ADMIN.

2) Các sheet do ADMIN tạo ra không có User hay Pass mà phụ thuộc vào quyền đăng nhập của ADMIN, không ai được xem các sheet này, ngoại trừ ADMIN muốn xem (mặc định là sau khi thoát file chúng sẽ ẩn cho đến khi ADMIN bấm nút gọi chúng).

3) Sau khi ADMIN tạo ra các USER, mỗi USER là một sheet và chỉ có một mà thôi. Khi đăng nhập theo quyền của USER thì USER đó chỉ được sử dụng 2 sheet, đó là sheet HOME và sheet của USER đó mà thôi, họ không có quyền truy cập đến bất kỳ USER nào khác, dĩ nhiên không thể đụng tới các sheet thuộc ADMIN.

4) ADMIN được quyền xem mọi sheet, quản lý mọi sheet, cho nên khi ADMIN gọi sheet của bất kỳ USER nào thì sheet thuộc USER đó hiện ra.

Bạn theo nguyên tắc đó mà làm việc. Riêng nếu muốn quyền USER tạo thêm 1 vài sheet thì tôi sẽ nghiên cứu thêm (tức phải thay đổi toàn bộ hướng lập trình cũ, rất phức tạp).
 
Upvote 0
3) Sau khi ADMIN tạo ra các USER, mỗi USER là một sheet và chỉ có một mà thôi. Khi đăng nhập theo quyền của USER thì USER đó chỉ được sử dụng 2 sheet, đó là sheet HOME và sheet của USER đó mà thôi, họ không có quyền truy cập đến bất kỳ USER nào khác, dĩ nhiên không thể đụng tới các sheet thuộc ADMIN.
Nếu như vậy thì rất bất tiện trong việc quản lý khi dùng chung cơ sở dữ liệu giữa các user. Em nghĩ rất ít trường hợp mà cần thiết mỗi một user là một sheet cố định mà là mỗi nhóm user là một số sheet. Như vậy có vẻ hợp lý hơn. EM đóng góp bằng ý kiến chủ quan của em thôi ạ.
 
Upvote 0
Nếu như vậy thì rất bất tiện trong việc quản lý khi dùng chung cơ sở dữ liệu giữa các user. Em nghĩ rất ít trường hợp mà cần thiết mỗi một user là một sheet cố định mà là mỗi nhóm user là một số sheet. Như vậy có vẻ hợp lý hơn. EM đóng góp bằng ý kiến chủ quan của em thôi ạ.
Tôi chẳng hiểu kiểu bạn nói, chẳng lẽ User này được xem sheet của User khác hay sao? Vậy phân quyền để làm gì? Chuyện ai nấy làm, chỉ có Admin là xem được họ muốn làm gì thôi. Nếu muốn dùng chung thì tạo một User chung, ai muốn vào thì đăng nhập theo User đó.
 
Upvote 0
Tôi chẳng hiểu kiểu bạn nói, chẳng lẽ User này được xem sheet của User khác hay sao? Vậy phân quyền để làm gì? Chuyện ai nấy làm, chỉ có Admin là xem được họ muốn làm gì thôi. Nếu muốn dùng chung thì tạo một User chung, ai muốn vào thì đăng nhập theo User đó.
Ý em là, với các user ngang quyền thì có thể xem dữ liệu của nhau mà anh. Ví dụ như với một sheet dữ liệu em muốn cấp cho 3 người dùng, chẳng lẽ em lại copy sheet đó ra làm 3, rồi mỗi lần sửa dữ liệu em lại sửa trong cả 3 sheet. Anh xem trong cái file em gửi có lẽ a sẽ hiểu rõ ý em hơn ạ.
 
Upvote 0
Ý em là, với các user ngang quyền thì có thể xem dữ liệu của nhau mà anh. Ví dụ như với một sheet dữ liệu em muốn cấp cho 3 người dùng, chẳng lẽ em lại copy sheet đó ra làm 3, rồi mỗi lần sửa dữ liệu em lại sửa trong cả 3 sheet. Anh xem trong cái file em gửi có lẽ a sẽ hiểu rõ ý em hơn ạ.
theo mình,
nếu 3 người cùng xem 1 sheet hoặc nhiều sheet cùng lúc thì ko vấn đề gì, còn việc cho phép nhiều người cùng lúc chỉnh sửa vào 1 sheet thì ... +-+-+-+
 
Lần chỉnh sửa cuối:
Upvote 0
theo mình,
nếu 3 người cùng xem 1 sheet hoặc nhiều sheet cùng lúc thì ko vấn đề gì, còn việc cho phép nhiều người cùng lúc chỉnh sửa vào 1 sheet thì ... +-+-+-+
Mình không rành về VBA nên mình chỉ nói lên ý kiến chủ quan của mình thôi bạn ạ. Còn khả năng thực hiện được hay không thì mình ko biết (biết mình làm luốn cho rồi khỏi kêu :D) Mình cũng chỉ muốn đóng góp ý kiến với a Nghĩa để chương trình được toàn diện hơn.
Với ý kiến của bạn mình nghĩ nếu đã xem được thì sửa được chứ bạn. Bới vì với một nhóm user thì sẽ được quyền tác động trong một số sheet nhất định mà. Vì vậy mình mới nói a Nghĩa thử nghiên cứu xem khi mà tạo user mới có thêm một mục là chọn group cho nó chẳng hạn, với group đó mình tạo trước bao gồm những sheet nào rồi.
 
Upvote 0
Mình xin góp 1 ý kiến nhỏ:
- Mọi người đều thống nhất là file excel bảo mật không cao, nên việc phân quyền xem file cho admin và user khó mà "qua mặt" được người "tò mò" -> tính khả thi của tiện ích anh Nghĩa làm sẽ không nhiều lắm (mong anh đừng phận ý, bản thân mình đã học thêm được nhiều điều từ code anh viết)
- Mấu chốt trong file excel này là sheet AD_SETTING, và việc để nó visible khá dễ dàng (sau khi unprotect activewookbook), và sau khi xem được sheet này thì mình có toàn quyền admin luôn ^^.
Đề xuất: anh Nghĩa xem có phương pháp nào để mã hóa, ẩn các pass, hoặc giấu pass ở một nơi nào đó (ví dụ registry), hoặc phải có mã check nào đó (giống như mã nạp thẻ) để kiểm tra pass không?
 
Upvote 0
Cho em hỏi thêm nếu em muốn khi gọi sheet nào thì chỉ sheet đó hiện lên còn các sheet khác bị ẩn hết thì em phải sửa chỗ nào ạ??
 
Upvote 0
Ý em là, với các user ngang quyền thì có thể xem dữ liệu của nhau mà anh. Ví dụ như với một sheet dữ liệu em muốn cấp cho 3 người dùng, chẳng lẽ em lại copy sheet đó ra làm 3, rồi mỗi lần sửa dữ liệu em lại sửa trong cả 3 sheet. Anh xem trong cái file em gửi có lẽ a sẽ hiểu rõ ý em hơn ạ.

Nếu tạo 1 User mà có đến Max là từ 1 đến 6 sheet và nhiều người dùng chung 1 User đó có được không? Tức là khi vào User đó người dùng có thể xem được tới 6 sheet được tạo.

Cho em hỏi thêm nếu em muốn khi gọi sheet nào thì chỉ sheet đó hiện lên còn các sheet khác bị ẩn hết thì em phải sửa chỗ nào ạ??

Cái này không khó tí nào cả. Muốn ẩn là ẩn thôi.
 
Upvote 0
Web KT
Back
Top Bottom