* fix: Resolve the issue mentioned in #3392
* fix: Change checkLdapUserPassword to CheckLdapUserPassword.
* fix: the issue mentioned by hsluoyz.
* fix: Check if the user parameter is nil
* fix: use existing i18n message
* feat: Force users to change their passwords after 3/6/12 months
* feat: Check if the password has expired by using the last_change_password_time field added to the user table
* feat: Use the created_time field of the user table to aid password expiration checking
* feat: Rename variable
* feat: support IP limitation for user entry pages
* fix: error message, ip whiteList, check_entry_ip
* fix: perform checks on the backend
* fix: change the implementation of checking IpWhitelist
* fix: add entryIpCheck in SetPassword and remove it from VerifyCode
* fix: remove additional error message pop-ups
* fix: add isRestricted and show ip error in EntryPage.js
* fix: error message
* Update auth.go
* Update check_ip.go
* Update check_ip.go
* fix: update return value of the check function from string to error
* fix: remoteAddress position
* fix: IP whitelist
* fix: clientIp
* fix:add util.GetClientIpFromRequest
* fix: remove duplicate IP and port separation codes and remove extra special characters after clientIp
* fix: gofumpt
* fix: getIpInfo and localhost
---------
Co-authored-by: Yang Luo <hsluoyz@qq.com>
Added validation checks to ensure that a user's email and phone number are provided before enabling MFA email and phone respectively. This fixes the issue where MFA could be enabled without these values, causing inconsistencies.
* feat: auto trim username during login and lowercase when isUsernameLowered enabled in conf
* fix: fix linter error
* fix: fix linter error
* fix: fix linter error
* fix: failed to set password after changing username
When we add a new member to an organization using Casdoor, Casdoor will automatically generate a member with a random username, such as "user_qvducc". When we change the username, for example, to "yunshu", an issue arises where we are unable to successfully edit the password. This is because Casdoor searches for a user based on `owner/username`, and before any changes are saved, the username in the database remains "user_qvducc". However, the frontend uses `orgName/yunshu` instead of `orgName/user_qvducc` to send the request to change the password. As a result, the backend cannot find the user and the password change fails.
* Update user.go
---------
Co-authored-by: hsluoyz <hsluoyz@qq.com>
* Support uploading roles and permissions via xlsx file.
* Template xlsx file for uploading users and permissions.
* reformat according to gofumpt.
* fix typo.
* add password complexity options to organization edit page.
* add password complexity options to organization edit page.
* Fixed Typos.
* Fixed Typos.
* feat:add password complexity options to organization edit page
* Auto generate i18n fields.
* Refactor code according to instructions
* Support autocheck passwd complexity in frontend when setting passwd in user edit page.
* feat:Backend Support for password validation in signup and forget page.
* feat:Frontend Support for password validation in signup and forget page.
* Add default password complex option & Update historical empty filed with default option.
* Migrator for field `password_complex_options` in org table.
* feat: support frontend password complex option check in user_edit/forget/signup page.
* frontend update for user edit page
* update i18n file
---------
Co-authored-by: hsluoyz <hsluoyz@qq.com>
* rebase master
* feat: add group in userEditPage
* feat: use id as the pk
* feat: add groups item in user
* feat: add tree component
* rebase
* feat: ui
* fix: fix some bug
* fix: route
* fix: ui
* fix: improve ui