auth.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. import Cache from './cache'
  2. import Util from './util2'
  3. import Global from './global'
  4. import Dialog from './dialog'
  5. //缓存 该缓存只在本文件调用
  6. let _storage = {}
  7. Cache.defineProperty(_storage, 'authExpire')
  8. Cache.defineProperty(_storage, 'authSign')
  9. Cache.defineProperty(_storage, 'authMemberId')
  10. Cache.defineProperty(_storage, 'authMemberInfo')
  11. Cache.defineProperty(_storage, 'sessionId')
  12. Cache.defineProperty(_storage, 'userType')
  13. Cache.defineProperty(_storage, 'mineBase')
  14. Cache.defineProperty(_storage, 'inviteCode')
  15. //用户授权
  16. let auth = {}
  17. //加密钥匙
  18. const _key = 'user.dreamstech.cn'
  19. //过期时间,毫秒
  20. const _timeout = 604800000 //7 * 24 * 60 * 60 * 1000
  21. //获取签名
  22. let _getSign = (expire, memberId) => {
  23. return Util.md5(memberId + '.' + expire + '.' + _key)
  24. }
  25. //检测签名
  26. auth._checkSign = () => {
  27. let loginExpire = _storage.authExpire || 0
  28. let loginSign = _storage.authSign || ''
  29. let memberId = auth.getMemberId()
  30. if (loginExpire > 0 && loginSign != '' && memberId > 0) {
  31. let timestamp = Date.parse(new Date())
  32. let sign = _getSign(loginExpire, memberId)
  33. let expire = timestamp - _timeout
  34. if (loginSign == sign && loginExpire >= expire) {
  35. //签名一致并在有效时间内
  36. return true
  37. }
  38. }
  39. return false
  40. }
  41. //获取inviteCode
  42. auth.getInviteCode = ()=>{
  43. return _storage.inviteCode || null
  44. }
  45. //保存inviteCode
  46. auth.setInviteCode = (data) => {
  47. if(data){
  48. _storage.inviteCode = data
  49. }
  50. }
  51. //删除inviteCode
  52. auth.removeInviteCode = () =>{
  53. Cache.remove('inviteCode')
  54. }
  55. //保存我的界面数据
  56. auth.getMineBase = (data) => {
  57. if(data){
  58. _storage.mineBase = data
  59. }
  60. return _storage.mineBase
  61. }
  62. //检测是否是推广人
  63. auth.isPromoter = (show) => {
  64. let mineBase = _storage.mineBase || '';
  65. if(mineBase&&mineBase.distributor&&mineBase.distributor.status=='PASSED'){
  66. return true;
  67. }else {
  68. if(!show){
  69. // let status = '未申请';
  70. // if(mineBase&&mineBase.distributor){
  71. // switch(mineBase.distributor.status){
  72. // case 'REVIEW_WAIT': status = '待审核';
  73. // break;
  74. // case 'REJECTED' :status = '已拒绝';
  75. // break;
  76. // case 'DISABLE': status = '已禁用';
  77. // break;
  78. // case 'NO_APPLY': status = '未申请';
  79. // break;
  80. // case 'PASSED': status = '已通过';
  81. // break;
  82. // }
  83. // }
  84. let statusTxt = '未申请';
  85. let reason = null;
  86. if(mineBase&&mineBase.distributor){
  87. statusTxt = mineBase.distributor.statusTxt;
  88. reason = mineBase.distributor.reason
  89. }
  90. Dialog.alert({
  91. // content:`推广人员${statusTxt}${reason?"("+reason+")":''}`,
  92. content:'是否申请成为团长',
  93. confirmText: '去申请',
  94. showCancel: true,
  95. success: (res) => {
  96. if (res.confirm) {
  97. uni.navigateTo({
  98. url: '/pages/applyToPromotion'
  99. });
  100. }
  101. }
  102. })
  103. }
  104. return false;
  105. }
  106. }
  107. //是否登录
  108. auth.isLogin = () => {
  109. return auth._checkSign()
  110. }
  111. /*
  112. * 获取用户状态(当且仅当用户登录时,即有缓存信息,能获取到 userType>0 )
  113. * @return {int} userType {-1:两者都不是; 1: 会员; 2:游客}
  114. */
  115. auth.getUserType = () => {
  116. if(auth._checkSign()){
  117. return _storage.userType
  118. }
  119. return Global.userType.none
  120. }
  121. //是否登录 调用方式 auth.isAuth
  122. Object.defineProperty(auth,'isAuth',{
  123. configurable:false,
  124. get: ()=>{
  125. return auth.getUserType() == Global.userType.member
  126. }
  127. })
  128. // 获取用户状态 auth.appUserType
  129. Object.defineProperty(auth,'appUserType',{
  130. configurable:false,
  131. get: ()=>{
  132. return auth.getUserType()
  133. }
  134. })
  135. //登录
  136. auth.login = (userType, sessionId, memberId, memberInfo) => {
  137. let expire = Date.parse(new Date())
  138. let sign = _getSign(expire, memberId)
  139. _storage.authExpire = expire
  140. _storage.authSign = sign
  141. _storage.authMemberId = memberId
  142. _storage.authMemberInfo = memberInfo
  143. _storage.sessionId = sessionId
  144. _storage.userType = userType
  145. }
  146. //退出
  147. auth.logout = () => {
  148. Cache.clear()
  149. }
  150. auth.getSessionId = () => {
  151. // return "{\"loginId\":\"12052\",\"name\":\"t00001\",\"dtype\":\"MemberLogin\",\"userId\":\"12052\"}"
  152. return _storage.sessionId || ''
  153. }
  154. //会员id
  155. auth.getMemberId = () => {
  156. // return '12052'
  157. return _storage.authMemberId || 0
  158. }
  159. //会员信息
  160. auth.getMemberInfo = () => {
  161. return _storage.authMemberInfo || {}
  162. }
  163. auth.setMemberInfo = (memberInfo) => {
  164. _storage.authMemberInfo = memberInfo
  165. }
  166. export default auth