shadowsocks-manager
Version:
A shadowsocks manager tool for multi user and traffic control.
236 lines (233 loc) • 8.28 kB
JavaScript
const app = angular.module('app');
app
.controller('HomeController', ['$scope', '$mdMedia', '$mdSidenav', '$state', '$http', '$timeout', '$localStorage', 'configManager',
($scope, $mdMedia, $mdSidenav, $state, $http, $timeout, $localStorage, configManager) => {
const config = configManager.getConfig();
if(config.status === 'normal') {
return $state.go('user.index');
} else if (config.status === 'admin') {
return $state.go('admin.index');
} else {
$localStorage.admin = {};
$localStorage.user = {};
$scope.setMainLoading(false);
}
$scope.setConfig(config);
$scope.home = {};
$scope.innerSideNav = true;
$scope.menuButton = function() {
if ($mdMedia('gt-sm')) {
$scope.innerSideNav = !$scope.innerSideNav;
} else {
$mdSidenav('left').toggle();
}
};
$scope.menus = [{
name: '首页',
icon: 'home',
click: 'home.index'
}, {
name: '登录',
icon: 'cloud',
click: 'home.login'
}, {
name: '注册',
icon: 'face',
click: 'home.signup'
}];
$scope.menuClick = (index) => {
$mdSidenav('left').close();
$state.go($scope.menus[index].click);
};
}
])
.controller('HomeIndexController', ['$scope', '$state',
($scope, $state) => {
$scope.login = () => { $state.go('home.login'); };
$scope.signup = () => { $state.go('home.signup'); };
}
])
.controller('HomeLoginController', ['$scope', '$state', 'homeApi', 'alertDialog', '$localStorage', 'configManager',
($scope, $state, homeApi, alertDialog, $localStorage, configManager) => {
$scope.user = {};
$scope.login = () => {
alertDialog.loading().then(() => {
return homeApi.userLogin($scope.user.email, $scope.user.password);
}).then(success => {
$scope.setId(success.id);
// $localStorage.home.status = success.type;
return alertDialog.close().then(() => {
return success;
});
}).then(success => {
configManager.deleteConfig();
if (success.type === 'normal') {
$state.go('user.index');
} else if (success.type === 'admin') {
$state.go('admin.index');
}
}).catch(err => {
alertDialog.show(err, '确定');
});
};
$scope.findPassword = () => {
alertDialog.loading().then(() => {
return homeApi.findPassword($scope.user.email);
})
.then(success => {
alertDialog.show(success, '确定');
}).catch(err => {
alertDialog.show(err, '确定');
});
};
$scope.enterKey = key => {
if(key.keyCode === 13) {
$scope.login();
}
};
}
])
.controller('HomeSignupController', ['$scope', '$state', '$interval', '$timeout', 'homeApi', 'alertDialog', '$localStorage', 'configManager',
($scope, $state, $interval, $timeout, homeApi, alertDialog, $localStorage, configManager) => {
$scope.user = {};
$scope.sendCodeTime = 0;
$scope.sendCode = () => {
alertDialog.loading().then(() => {
return homeApi.sendCode($scope.user.email, $scope.home.refId);
})
.then(success => {
alertDialog.show('验证码已发至邮箱', '确定');
$scope.sendCodeTime = 120;
const interval = $interval(() => {
if ($scope.sendCodeTime > 0) {
$scope.sendCodeTime--;
} else {
$interval.cancel(interval);
$scope.sendCodeTime = 0;
}
}, 1000);
}).catch(err => {
alertDialog.show(err, '确定');
});
};
$scope.signup = () => {
alertDialog.loading().then(() => {
return homeApi.userSignup($scope.user.email, $scope.user.code, $scope.user.password, $scope.home.refId);
})
.then(userType => {
alertDialog.show('用户注册成功', '确定').then(success => {
configManager.deleteConfig();
if(userType === 'admin') {
$state.go('admin.index');
} else {
$state.go('user.index');
}
});
}).catch(err => {
alertDialog.show(err, '确定');
});
};
}
])
.controller('HomeResetPasswordController', ['$scope', '$http', '$state', '$stateParams', 'alertDialog',
($scope, $http, $state, $stateParams, alertDialog) => {
if($scope.config.status) {
alertDialog.show('请先退出登录再访问重置密码链接', '确定');
return;
}
$scope.user = {};
const token = $stateParams.token;
alertDialog.loading().then(() => {
return $http.get('/api/home/password/reset', {
params: {
token
},
});
}).then(() => {
return alertDialog.close();
}).catch(() => {
alertDialog.show('该链接已经失效', '确定').then(() => {
$state.go('home.index');
});
});
$scope.resetPassword = () => {
alertDialog.loading();
$http.post('/api/home/password/reset', {
token,
password: $scope.user.password,
}).then(() => {
alertDialog.show('修改密码成功', '确定').then(() => {
$state.go('home.login');
});
}).catch(() => {
alertDialog.show('修改密码失败', '确定');
});
};
}
])
.controller('HomeMacLoginController', ['$scope', '$http', '$state', '$stateParams', '$localStorage', 'configManager', 'alertDialog',
($scope, $http, $state, $stateParams, $localStorage, configManager, alertDialog) => {
if($scope.config.status) {
alertDialog.show('请先退出登录再访问mac登录链接', '确定');
return;
}
const mac = $stateParams.mac;
configManager.deleteConfig();
$http.post('/api/home/macLogin', {
mac,
}).then(() => {
$localStorage.user = {};
$state.go('user.index');
}).catch(() => {
$localStorage.home = {};
$localStorage.user = {};
$state.go('home.index');
});
}
])
.controller('HomeTelegramLoginController', ['$scope', '$http', '$state', '$stateParams', '$localStorage', 'configManager', 'alertDialog',
($scope, $http, $state, $stateParams, $localStorage, configManager, alertDialog) => {
if($scope.config.status) {
alertDialog.show('请先退出登录再访问telegram登录链接', '确定');
return;
}
const token = $stateParams.token;
configManager.deleteConfig();
$http.post('/api/user/telegram/login', {
token,
}).then(() => {
$localStorage.user = {};
$state.go('user.index');
}).catch(() => {
$localStorage.home = {};
$localStorage.user = {};
$state.go('home.index');
});
}
])
.controller('HomeRefController', ['$scope', '$state', '$stateParams', '$http', 'alertDialog',
($scope, $state, $stateParams, $http, alertDialog) => {
if($scope.config.status) {
alertDialog.show('请先退出登录再访问邀请链接', '确定');
return;
}
const refId = $stateParams.refId;
$scope.home.refId = refId;
$scope.home.refIdValid = false;
$http.post(`/api/home/ref/${ refId }`).then(success => {
$scope.home.refIdValid = success.data.valid;
$state.go('home.signup');
});
}
])
.controller('HomeRefInputController', ['$scope', '$state', '$stateParams', '$http', 'alertDialog',
($scope, $state, $stateParams, $http, alertDialog) => {
if($scope.config.status) {
alertDialog.show('请先退出登录再访问此链接', '确定');
return;
}
$scope.home.refInput = true;
$state.go('home.signup');
}
])
;