diff --git a/admin/src/views/account/login.vue b/admin/src/views/account/login.vue
index 20d066d5..2ff85c41 100644
--- a/admin/src/views/account/login.vue
+++ b/admin/src/views/account/login.vue
@@ -45,6 +45,27 @@
+
+
+
@@ -59,6 +80,7 @@ import LayoutFooter from '@/layout/components/footer.vue'
import useAppStore from '@/stores/modules/app'
import useUserStore from '@/stores/modules/user'
import cache from '@/utils/cache'
+import UserSetting from '@/views/user/setting.vue'
const passwordRef = shallowRef()
const formRef = shallowRef()
@@ -67,6 +89,7 @@ const userStore = useUserStore()
const route = useRoute()
const router = useRouter()
const remAccount = ref(false)
+const showForceChangePwd = ref(false)
const config = computed(() => appStore.config)
const formData = reactive({
account: '',
@@ -104,14 +127,27 @@ const handleLogin = async () => {
account: remAccount.value ? formData.account : ''
})
await userStore.login(formData)
- const {
- query: { redirect }
- } = route
- const path = typeof redirect === 'string' ? redirect : PageEnum.INDEX
- router.push(path)
+ const userInfo = await userStore.getUserInfo()
+ console.log('userInfo', userInfo)
+ // 检查是否首次登录
+ if (userInfo?.first_login === 1 || userInfo?.user?.first_login === 1) {
+ showForceChangePwd.value = true
+ return
+ }
+ window.location.href = '/workbench'
}
const { isLock, lockFn: lockLogin } = useLockFn(handleLogin)
+const handleForcePwdSuccess = async () => {
+ showForceChangePwd.value = false
+ window.location.href = '/workbench'
+}
+
+const handleForcePwdCancel = async () => {
+ await userStore.logout()
+ showForceChangePwd.value = false
+}
+
onMounted(() => {
const value = cache.get(ACCOUNT_KEY)
if (value?.remember) {
diff --git a/admin/src/views/user/setting.vue b/admin/src/views/user/setting.vue
index be75d14c..2312c61e 100644
--- a/admin/src/views/user/setting.vue
+++ b/admin/src/views/user/setting.vue
@@ -9,23 +9,23 @@
:rules="rules"
label-width="100px"
>
-
+
-
+
-
+
-
+
@@ -72,6 +76,16 @@ import { setUserInfo } from '@/api/user'
import useUserStore from '@/stores/modules/user'
import feedback from '@/utils/feedback'
+const props = defineProps<{
+ isFirstLogin?: boolean
+ tempPassword?: string
+}>()
+
+const emit = defineEmits<{
+ (event: 'success'): void
+ (event: 'cancel'): void
+}>()
+
const formRef = ref()
const userStore = useUserStore()
// 表单数据
@@ -109,6 +123,10 @@ const getUser = async () => {
//@ts-ignore
formData[key] = userInfo[key]
}
+ // 如果是首次登录强制修改密码,自动填充旧密码
+ if (props.isFirstLogin && props.tempPassword) {
+ formData.password_old = props.tempPassword
+ }
}
// 设置个人设置
@@ -143,7 +161,11 @@ const setUser = async () => {
}
}
await setUserInfo(formData)
- userStore.getUserInfo()
+ await userStore.getUserInfo()
+ if (props.isFirstLogin) {
+ feedback.msgSuccess('修改成功')
+ emit('success')
+ }
}
// 提交数据
diff --git a/server/like-admin/src/main/java/com/mdd/admin/controller/adminapi/auth/AdminController.java b/server/like-admin/src/main/java/com/mdd/admin/controller/adminapi/auth/AdminController.java
index 3e446f31..31f22233 100644
--- a/server/like-admin/src/main/java/com/mdd/admin/controller/adminapi/auth/AdminController.java
+++ b/server/like-admin/src/main/java/com/mdd/admin/controller/adminapi/auth/AdminController.java
@@ -4,6 +4,8 @@ import com.mdd.admin.LikeAdminThreadLocal;
import com.mdd.admin.service.IIndexService;
import com.mdd.admin.service.admin.IAdminRoleService;
import com.mdd.admin.service.admin.IAdminService;
+import com.mdd.admin.validate.system.SystemAdminUpInfoValidate;
+import com.mdd.admin.validate.system.SystemEditSelfValidate;
import com.mdd.admin.vo.auth.AdminMySelfVo;
import com.mdd.common.aop.NotLogin;
import com.mdd.common.aop.NotPower;
@@ -11,9 +13,9 @@ import com.mdd.common.core.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.checkerframework.checker.units.qual.A;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@@ -31,6 +33,9 @@ public class AdminController {
@Resource
IAdminRoleService iAdminRoleService;
+ @Resource
+ IAdminService iSystemAuthAdminService;
+
@NotPower
@GetMapping("/mySelf")
@ApiOperation(value="获取当前管理员信息")
@@ -43,4 +48,11 @@ public class AdminController {
return AjaxResult.success(mySelf);
}
+ @PostMapping("/editSelf")
+ @ApiOperation(value = "编辑当前管理员信息")
+ public AjaxResult