'use strict';

var angular = require('angular');
require('./modules');
var module = angular.module('login');

module.run(function($rootScope, $state, LinkerCache, localforage, LinkerService,
AppConfig) {
  /**
   * 在自动登录状态过期后，需要重新登录。
   *
   * @return
   */
  $rootScope.$on('certificateExpires', function() {
    $rootScope.appEntryState = $state.$current;
    if(!AppConfig.getCustomResult('passwordLoginEnable')) {
      $state.go('calogin');
    } else {
      $state.go('login'); // 定制是否有密码登录页面
    }
  });
  /**
   * 登录成功后对登录人缓存处理
   */
  $rootScope.$on('login', function() {
    LinkerCache.get(LinkerService.currentUserId).then(function(loginUser) {
      localStorage.setItem('lastLoginUser', JSON.stringify(loginUser));
    });
  });

  function clearCache() {
    localforage.removeItem('loginUser');
    localStorage.removeItem('userId');
    localStorage.removeItem('userToken');
    localStorage.removeItem('validDate');
    delete $rootScope.loginUser;
  }

  $rootScope.$on('logout', clearCache);
  $rootScope.$on('serverUrl.changed', clearCache);
});

/**
 * @deprecated 只适用于v1.12.0版本，计划在v1.15.0版本中删除
 */
module.run(function(localforage) {
  localforage.getItem('lastLoginUser')
    .then(function(lastLoginUser) {
      if (lastLoginUser) {
        localStorage.setItem('lastLoginUser', JSON.stringify(lastLoginUser));
      }
    });
});
