mirror of
https://github.com/ialley-workshop-open/uni-halo.git
synced 2025-05-21 02:50:15 +09:00
新增:私密分类的访问
This commit is contained in:
parent
f838da43d8
commit
f6feecb324
@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import HttpHandler from '@/common/http/request.js'
|
import HttpHandler from '@/common/http/request.js'
|
||||||
|
import { getCache } from '@/utils/storage.js'
|
||||||
export default {
|
export default {
|
||||||
/**
|
/**
|
||||||
* 查询分类列表
|
* 查询分类列表
|
||||||
@ -19,6 +20,8 @@ export default {
|
|||||||
* @param {Object} params 查询参数
|
* @param {Object} params 查询参数
|
||||||
*/
|
*/
|
||||||
getCategoryPostList: (slug, params) => {
|
getCategoryPostList: (slug, params) => {
|
||||||
|
// 从缓存中根据分类获取密码,如果获取到了说明本分类需要密码,避免多个分类需要密码在输入密码后刷新页面点错了分类
|
||||||
|
params.password = getCache('APP_CATEGORY_PWD_' + slug)
|
||||||
return HttpHandler.Get(`/api/content/categories/${slug}/posts`, params)
|
return HttpHandler.Get(`/api/content/categories/${slug}/posts`, params)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,8 @@ import {
|
|||||||
getAdminAccessToken
|
getAdminAccessToken
|
||||||
} from "@/utils/auth.js";
|
} from "@/utils/auth.js";
|
||||||
import {
|
import {
|
||||||
delCache
|
delCache,
|
||||||
|
setCache
|
||||||
} from "@/utils/storage";
|
} from "@/utils/storage";
|
||||||
export const setInterceptors = (http) => {
|
export const setInterceptors = (http) => {
|
||||||
http.interceptors.request.use(
|
http.interceptors.request.use(
|
||||||
@ -57,6 +58,15 @@ export const setInterceptors = (http) => {
|
|||||||
message: 'API接口服务异常!'
|
message: 'API接口服务异常!'
|
||||||
})
|
})
|
||||||
} else if (response.data.status == 401) {
|
} else if (response.data.status == 401) {
|
||||||
|
uni.$tm.toast(response.data.message);
|
||||||
|
// 如果是请求分类之后报401说明密码错误,那么清除该密码,下次点击会报403弹窗再次输入密码
|
||||||
|
if (response.config.url.indexOf('/api/content/categories') >= 0) {
|
||||||
|
let requestUrl = response.config.url;
|
||||||
|
var reg = '(?<=/api/content/categories/).+(?=/posts)'
|
||||||
|
let category = requestUrl.match(reg)[0]
|
||||||
|
delCache('APP_CATEGORY_PWD_' + category)
|
||||||
|
} else {
|
||||||
|
// 其他情况维持原来的逻辑
|
||||||
delCache('APP_ADMIN_LOGIN_TOKEN');
|
delCache('APP_ADMIN_LOGIN_TOKEN');
|
||||||
uni.$eShowModal({
|
uni.$eShowModal({
|
||||||
title: '提示',
|
title: '提示',
|
||||||
@ -75,6 +85,44 @@ export const setInterceptors = (http) => {
|
|||||||
url: '/pages/tabbar/about/about'
|
url: '/pages/tabbar/about/about'
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
} else if (response.data.status == 403) {
|
||||||
|
// 如果报403是请求分类文章接口(您没有该分类的访问权限)的话说明是私密分类,需要输入密码请求
|
||||||
|
if (response.config.url.indexOf('/api/content/categories') >= 0) {
|
||||||
|
uni.showModal({
|
||||||
|
title: '私密分类', // TODO 这里应该获取分类的名字,可以在弹窗之前请求后台拿到所有分类根据分类code拿到名称,但是不会在这之前发送请求
|
||||||
|
content: '',
|
||||||
|
editable: true,
|
||||||
|
placeholderText: '请输入密码',
|
||||||
|
confirmText: '确认',
|
||||||
|
cancelText: '取消',
|
||||||
|
showCancel: true,
|
||||||
|
cancelColor: '#000000',
|
||||||
|
confirmColor: '#007aff',
|
||||||
|
success: (res) => {
|
||||||
|
if (res.confirm) {
|
||||||
|
// TODO 这里如果没有输入密码点击确认应该阻止窗口关闭,但是没找到方法
|
||||||
|
if (!res.content) {
|
||||||
|
uni.$tm.toast('请输入密码');
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 根据请求URL正则匹配分类code,然后把输入的密码根据分类code放入缓存,然后在category.getCategoryPostList中获取,解决多个分类加密输入密码后点错的问题
|
||||||
|
// 目前存在一个问题,比如前两个都需要密码,如果先输入第二个的密码之后,重新进来默认打开第一个还会弹窗,所以想在弹窗标题上增加分类名字
|
||||||
|
// 另外有以下两种方式科技解决
|
||||||
|
// TODO 1.其实这里获取到密码之后可以直接发送一个请求追加上password参数,因为后台会缓存权限,后续不输入密码也可以访问,可惜不会
|
||||||
|
// TODO 2.另外也可以拿到密码之后,直接选中该分类追加password参数,重新请求,可惜也不会
|
||||||
|
let requestUrl = response.config.url;
|
||||||
|
var reg = '(?<=/api/content/categories/).+(?=/posts)'
|
||||||
|
let category = requestUrl.match(reg)[0]
|
||||||
|
setCache('APP_CATEGORY_PWD_' + category, res.content)
|
||||||
|
uni.reLaunch({
|
||||||
|
url: '/pages/tabbar/category/category'
|
||||||
|
});
|
||||||
|
} else if (res.cancel) {
|
||||||
|
}
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return Promise.reject(response.data);
|
return Promise.reject(response.data);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user