├── .gitignore ├── README.md ├── docs ├── images │ ├── 1.png │ ├── 2.png │ ├── 3.png │ ├── 4.png │ ├── 5.png │ ├── 6.png │ ├── 7.png │ └── 8.png ├── tw-sso.sql └── 说明.docx ├── pom.xml ├── sso-common ├── pom.xml ├── src │ └── main │ │ ├── java │ │ └── com │ │ │ └── tongwei │ │ │ ├── Const.java │ │ │ ├── auth │ │ │ ├── anno │ │ │ │ ├── EnableSSO.java │ │ │ │ ├── RequirePerms.java │ │ │ │ ├── RequireRoles.java │ │ │ │ └── RequireUsers.java │ │ │ ├── config │ │ │ │ ├── SsoConfiguration.java │ │ │ │ ├── SsoProperties.java │ │ │ │ ├── SsoRedisAutoConfiguration.java │ │ │ │ └── SsoRedisProperties.java │ │ │ ├── core │ │ │ │ └── SessionCore.java │ │ │ ├── filter │ │ │ │ ├── AbstractAuthFilter.java │ │ │ │ └── SsoFilter.java │ │ │ ├── helper │ │ │ │ └── AuthValidateHelper.java │ │ │ ├── interceptors │ │ │ │ ├── AccessLogInterceptor.java │ │ │ │ └── AuthorizationAttributeSourceInterceptor.java │ │ │ ├── log │ │ │ │ ├── AccessLog.java │ │ │ │ ├── DBAccessUserLogBean.java │ │ │ │ ├── DBUserLogBean.java │ │ │ │ ├── Log.java │ │ │ │ ├── LogBean.java │ │ │ │ ├── TextLogBean.java │ │ │ │ └── TextUserLogBean.java │ │ │ ├── model │ │ │ │ ├── AuthRole.java │ │ │ │ ├── AuthUser.java │ │ │ │ ├── Menu.java │ │ │ │ ├── Org.java │ │ │ │ ├── OrgType.java │ │ │ │ ├── Permission.java │ │ │ │ ├── Position.java │ │ │ │ ├── Role.java │ │ │ │ ├── User.java │ │ │ │ └── UserGroup.java │ │ │ ├── security │ │ │ │ ├── Auth.java │ │ │ │ ├── RememberMeType.java │ │ │ │ ├── RequireType.java │ │ │ │ └── rule │ │ │ │ │ ├── AbstractRememberMeRule.java │ │ │ │ │ ├── AllUsersAcess.java │ │ │ │ │ ├── CookieRememberMeRule.java │ │ │ │ │ ├── HeaderRememberMeRule.java │ │ │ │ │ ├── LoginAccessRule.java │ │ │ │ │ └── RememberMeRule.java │ │ │ ├── servlet │ │ │ │ └── SetCookieServlet.java │ │ │ ├── taglibs │ │ │ │ └── jsp │ │ │ │ │ ├── HasPermsAllTagSupport.java │ │ │ │ │ ├── HasPermsTagSupport.java │ │ │ │ │ ├── HasRolesAllTagSupport.java │ │ │ │ │ ├── HasRolesTagSupport.java │ │ │ │ │ └── InUsersTagSupport.java │ │ │ └── util │ │ │ │ ├── AESUtil.java │ │ │ │ ├── AuthUtil.java │ │ │ │ ├── LogUtil.java │ │ │ │ ├── SessionUtil.java │ │ │ │ └── SyncUtil.java │ │ │ └── common │ │ │ ├── exception │ │ │ ├── ApplicationException.java │ │ │ ├── AuthenticationExcption.java │ │ │ └── CacheException.java │ │ │ ├── model │ │ │ └── ResultCode.java │ │ │ └── util │ │ │ ├── MD5Util.java │ │ │ └── ResponseUtil.java │ │ └── resources │ │ ├── META-INF │ │ └── Auth.tld │ │ └── application-sso-dev.yml └── target │ └── .gitignore ├── sso-server ├── pom.xml └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── tongwei │ │ │ ├── aliyun │ │ │ ├── AliyunEnv.java │ │ │ ├── AliyunSmsHandler.java │ │ │ ├── config │ │ │ │ ├── AliyunSsoConfiguration.java │ │ │ │ └── SsoEnableAliyun.java │ │ │ ├── mapper │ │ │ │ └── SmsMapper.java │ │ │ ├── model │ │ │ │ └── Sms.java │ │ │ └── sms │ │ │ │ └── SmsUtil.java │ │ │ ├── common │ │ │ ├── BaseController.java │ │ │ ├── dao │ │ │ │ ├── BaseQuery.java │ │ │ │ ├── CmMapper.java │ │ │ │ ├── CmService.java │ │ │ │ └── CmServiceImpl.java │ │ │ ├── model │ │ │ │ └── Result.java │ │ │ └── util │ │ │ │ ├── ReflectUtil.java │ │ │ │ ├── ResultUtil.java │ │ │ │ └── SpringUtils.java │ │ │ └── sso │ │ │ ├── QuickStartExample.java │ │ │ ├── StartApp.java │ │ │ ├── config │ │ │ ├── GlobalDefaultExceptionHandler.java │ │ │ ├── JSONConfig.java │ │ │ ├── RedisJobConfig.java │ │ │ └── SsoAcessRule.java │ │ │ ├── controller │ │ │ ├── LoginController.java │ │ │ ├── MainCotroller.java │ │ │ ├── RegisterController.java │ │ │ ├── ViewController.java │ │ │ ├── app │ │ │ │ └── AppController.java │ │ │ ├── log │ │ │ │ └── LogController.java │ │ │ ├── sms │ │ │ │ └── SmsController.java │ │ │ └── sys │ │ │ │ ├── BaseInfoController.java │ │ │ │ ├── MenuController.java │ │ │ │ ├── OrgController.java │ │ │ │ ├── PermController.java │ │ │ │ ├── PermGroupController.java │ │ │ │ ├── PositionController.java │ │ │ │ ├── RoleController.java │ │ │ │ ├── UserController.java │ │ │ │ └── UserGroupController.java │ │ │ ├── listener │ │ │ ├── ContextReadyListener.java │ │ │ └── SessionDestroyedListener.java │ │ │ ├── log │ │ │ └── JobLogger.java │ │ │ ├── mapper │ │ │ ├── BaseDeptMapper.java │ │ │ ├── BasePositionMapper.java │ │ │ ├── LogAccessMapper.java │ │ │ ├── LogLoginMapper.java │ │ │ ├── LogOperateMapper.java │ │ │ ├── MenuMapper.java │ │ │ ├── MenuMapper.xml │ │ │ ├── OrgMapper.java │ │ │ ├── OrgMapper.xml │ │ │ ├── OrgTypeMapper.java │ │ │ ├── PermGroupMapper.java │ │ │ ├── PermGroupMapper.xml │ │ │ ├── PermissionMapper.java │ │ │ ├── PermissionMapper.xml │ │ │ ├── PositionMapper.java │ │ │ ├── PositionMapper.xml │ │ │ ├── RegisterAppMapper.java │ │ │ ├── RoleMapper.java │ │ │ ├── RoleMapper.xml │ │ │ ├── UserGroupMapper.java │ │ │ ├── UserGroupMapper.xml │ │ │ ├── UserMapper.java │ │ │ └── UserMapper.xml │ │ │ ├── model │ │ │ ├── BaseDept.java │ │ │ ├── BasePosition.java │ │ │ ├── LoginLog.java │ │ │ ├── PermGroup.java │ │ │ └── RegisterApp.java │ │ │ ├── query │ │ │ ├── AccessLogQuery.java │ │ │ ├── BaseDeptQuery.java │ │ │ ├── BasePositionQuery.java │ │ │ ├── LoginLogQuery.java │ │ │ ├── OpLogQuery.java │ │ │ ├── OrgTypeQuery.java │ │ │ ├── SmsQuery.java │ │ │ └── UserQuery.java │ │ │ ├── redis │ │ │ ├── LogHandler.java │ │ │ ├── RedisHandler.java │ │ │ ├── RememberMeHandler.java │ │ │ ├── RoleChangeHandler.java │ │ │ └── UserChangeHandler.java │ │ │ ├── service │ │ │ ├── IBaseDeptService.java │ │ │ ├── IBasePositionService.java │ │ │ ├── ILogAccessService.java │ │ │ ├── ILogLoginService.java │ │ │ ├── ILogOpService.java │ │ │ ├── IMenuService.java │ │ │ ├── IOrgService.java │ │ │ ├── IOrgTypeService.java │ │ │ ├── IPermGroupService.java │ │ │ ├── IPermissionService.java │ │ │ ├── IPositionService.java │ │ │ ├── IRegisterAppService.java │ │ │ ├── IRoleService.java │ │ │ ├── ISmsService.java │ │ │ ├── IUserGroupService.java │ │ │ ├── IUserService.java │ │ │ └── impl │ │ │ │ ├── BaseDeptServiceImpl.java │ │ │ │ ├── BasePositionServiceImpl.java │ │ │ │ ├── LogAccessServiceImpl.java │ │ │ │ ├── LogLoginServiceImpl.java │ │ │ │ ├── LogOpServiceImpl.java │ │ │ │ ├── MenuServiceImpl.java │ │ │ │ ├── OrgServiceImpl.java │ │ │ │ ├── OrgTypeServiceImpl.java │ │ │ │ ├── PermGroupServiceImpl.java │ │ │ │ ├── PermissionServiceImpl.java │ │ │ │ ├── PositionServiceImpl.java │ │ │ │ ├── RegisterAppServiceImpl.java │ │ │ │ ├── RoleServiceImpl.java │ │ │ │ ├── SmsServiceImpl.java │ │ │ │ ├── UserGroupServiceImpl.java │ │ │ │ └── UserServiceImpl.java │ │ │ ├── tag │ │ │ ├── CtxTag.java │ │ │ └── StaticTag.java │ │ │ └── util │ │ │ ├── AppUtils.java │ │ │ ├── AuthService.java │ │ │ ├── DateUtils.java │ │ │ ├── PasswordUtil.java │ │ │ └── SessionExUtil.java │ ├── resources │ │ ├── application-dev.yml │ │ ├── application.yml │ │ ├── config │ │ │ └── mybatis │ │ │ │ └── mybatis-config.xml │ │ └── logback-spring.xml │ └── webapp │ │ ├── WEB-INF │ │ ├── lib │ │ │ ├── alicom-mns-receive-sdk-0.0.1-SNAPSHOT.jar │ │ │ ├── aliyun-java-sdk-core-3.2.3.jar │ │ │ ├── aliyun-java-sdk-dybaseapi-1.0.0-SNAPSHOT.jar │ │ │ ├── aliyun-java-sdk-dysmsapi-1.0.0.jar │ │ │ └── aliyun-sdk-mns-1.1.8.jar │ │ ├── sso │ │ │ ├── app │ │ │ │ └── register.jsp │ │ │ ├── firstPage.jsp │ │ │ ├── log │ │ │ │ ├── access.jsp │ │ │ │ ├── lg.jsp │ │ │ │ └── op.jsp │ │ │ ├── main.jsp │ │ │ ├── menu │ │ │ │ └── menu.jsp │ │ │ ├── org │ │ │ │ ├── base_dept.jsp │ │ │ │ ├── org.jsp │ │ │ │ └── orgType.jsp │ │ │ ├── perm │ │ │ │ └── perm.jsp │ │ │ ├── position │ │ │ │ ├── base_position.jsp │ │ │ │ └── position.jsp │ │ │ ├── role │ │ │ │ ├── org_role.jsp │ │ │ │ ├── position_role.jsp │ │ │ │ ├── role.jsp │ │ │ │ ├── ug_role.jsp │ │ │ │ └── user_role.jsp │ │ │ ├── sms │ │ │ │ └── sms.jsp │ │ │ ├── ug │ │ │ │ └── ug.jsp │ │ │ └── user │ │ │ │ └── user.jsp │ │ └── tlds │ │ │ └── SysTag.tld │ │ ├── common.jsp │ │ ├── login.jsp │ │ └── static │ │ ├── favicon.ico │ │ ├── login │ │ └── login.css │ │ ├── public │ │ ├── css │ │ │ ├── addstyle.css │ │ │ ├── base.css │ │ │ ├── custom.common.css │ │ │ └── platform.css │ │ ├── easyui │ │ │ ├── easyui-lang-zh_CN.js │ │ │ ├── easyui.css │ │ │ ├── images │ │ │ │ ├── accordion_arrows.png │ │ │ │ ├── blank.gif │ │ │ │ ├── calendar_arrows.png │ │ │ │ ├── combo_arrow.png │ │ │ │ ├── datagrid_icons.png │ │ │ │ ├── datebox_arrow.png │ │ │ │ ├── layout_arrows.png │ │ │ │ ├── linkbutton_bg.png │ │ │ │ ├── loading.gif │ │ │ │ ├── menu_arrows.png │ │ │ │ ├── messager_icons.png │ │ │ │ ├── new │ │ │ │ │ ├── datebox_arrow.png │ │ │ │ │ ├── dialog_close.png │ │ │ │ │ ├── grid.png │ │ │ │ │ ├── pagination_icons_disabeld.png │ │ │ │ │ ├── pagination_icons_hover.png │ │ │ │ │ ├── panel_tools_hover.png │ │ │ │ │ ├── spinner_arrows.png │ │ │ │ │ ├── tab_dropdown.png │ │ │ │ │ ├── tab_dropdown_hover.png │ │ │ │ │ ├── tabs_close.png │ │ │ │ │ ├── tabs_close_hover.png │ │ │ │ │ ├── 下拉菜单.png │ │ │ │ │ ├── 面板.png │ │ │ │ │ └── 面板_如果左边图标可以直接用白色时候就只用这个.png │ │ │ │ ├── pagination_icons.png │ │ │ │ ├── panel_tools.png │ │ │ │ ├── searchbox_button.png │ │ │ │ ├── slider_handle.png │ │ │ │ ├── spinner_arrows.png │ │ │ │ ├── tabs_icons.png │ │ │ │ ├── tree_icons.png │ │ │ │ └── validatebox_warning.png │ │ │ └── jquery.easyui.min.js │ │ ├── easyuitemplate │ │ │ ├── accordion.css │ │ │ ├── calendar.css │ │ │ ├── combobox.css │ │ │ ├── datagrid.css │ │ │ ├── datalist.css │ │ │ ├── datebox.css │ │ │ ├── dialog.css │ │ │ ├── easyui.css │ │ │ ├── filebox.css │ │ │ ├── fonticon.css │ │ │ ├── icon.css │ │ │ ├── icons │ │ │ │ ├── back.png │ │ │ │ ├── blank.gif │ │ │ │ ├── cancel.png │ │ │ │ ├── clear.png │ │ │ │ ├── cut.png │ │ │ │ ├── edit_add.png │ │ │ │ ├── edit_remove.png │ │ │ │ ├── filesave.png │ │ │ │ ├── filter.png │ │ │ │ ├── help.png │ │ │ │ ├── large_chart.png │ │ │ │ ├── large_clipart.png │ │ │ │ ├── large_picture.png │ │ │ │ ├── large_shapes.png │ │ │ │ ├── large_smartart.png │ │ │ │ ├── list.png │ │ │ │ ├── lock.png │ │ │ │ ├── man.png │ │ │ │ ├── mini_add.png │ │ │ │ ├── mini_edit.png │ │ │ │ ├── mini_refresh.png │ │ │ │ ├── more.png │ │ │ │ ├── no.png │ │ │ │ ├── ok.png │ │ │ │ ├── pencil.png │ │ │ │ ├── print.png │ │ │ │ ├── redo.png │ │ │ │ ├── reload.png │ │ │ │ ├── search.png │ │ │ │ ├── sum.png │ │ │ │ ├── tip.png │ │ │ │ └── undo.png │ │ │ ├── images │ │ │ │ ├── accordion_arrows.png │ │ │ │ ├── blank.gif │ │ │ │ ├── calendar_arrows.png │ │ │ │ ├── combo_arrow.png │ │ │ │ ├── datagrid_icons.png │ │ │ │ ├── datebox_arrow.png │ │ │ │ ├── layout_arrows.png │ │ │ │ ├── linkbutton_bg.png │ │ │ │ ├── loading.gif │ │ │ │ ├── menu_arrows.png │ │ │ │ ├── messager_icons.png │ │ │ │ ├── new │ │ │ │ │ ├── datebox_arrow.png │ │ │ │ │ ├── dialog_close.png │ │ │ │ │ ├── grid.png │ │ │ │ │ ├── pagination_icons_disabeld.png │ │ │ │ │ ├── pagination_icons_hover.png │ │ │ │ │ ├── panel_tools_hover.png │ │ │ │ │ ├── spinner_arrows.png │ │ │ │ │ ├── tab_dropdown.png │ │ │ │ │ ├── tab_dropdown_hover.png │ │ │ │ │ ├── tabs_close.png │ │ │ │ │ ├── tabs_close_hover.png │ │ │ │ │ ├── 下拉菜单.png │ │ │ │ │ ├── 面板.png │ │ │ │ │ └── 面板_如果左边图标可以直接用白色时候就只用这个.png │ │ │ │ ├── pagination_icons.png │ │ │ │ ├── panel_tools.png │ │ │ │ ├── searchbox_button.png │ │ │ │ ├── slider_handle.png │ │ │ │ ├── spinner_arrows.png │ │ │ │ ├── tabs_icons.png │ │ │ │ ├── tree_icons.png │ │ │ │ └── validatebox_warning.png │ │ │ ├── layout.css │ │ │ ├── linkbutton.css │ │ │ ├── menu.css │ │ │ ├── menubutton.css │ │ │ ├── messager.css │ │ │ ├── pagination.css │ │ │ ├── panel.css │ │ │ ├── progressbar.css │ │ │ ├── searchbox.css │ │ │ ├── slider.css │ │ │ ├── spinner.css │ │ │ ├── switchbutton.css │ │ │ ├── tab.css │ │ │ ├── textbox.css │ │ │ ├── tooltip.css │ │ │ ├── tree.css │ │ │ └── window.css │ │ ├── fonts │ │ │ ├── demo.css │ │ │ ├── demo.html │ │ │ ├── iconfont.css │ │ │ ├── iconfont.eot │ │ │ ├── iconfont.svg │ │ │ ├── iconfont.ttf │ │ │ └── iconfont.woff │ │ ├── iconfont │ │ │ ├── demo.css │ │ │ ├── demo.html │ │ │ ├── iconfont.css │ │ │ ├── iconfont.eot │ │ │ ├── iconfont.svg │ │ │ ├── iconfont.ttf │ │ │ └── iconfont.woff │ │ ├── images │ │ │ ├── login │ │ │ │ ├── appPhone.png │ │ │ │ ├── display_eyeon.png │ │ │ │ ├── display_eyeout.png │ │ │ │ ├── left-login.png │ │ │ │ ├── psd-login.png │ │ │ │ └── user-login.png │ │ │ └── main │ │ │ │ ├── left_list.png │ │ │ │ ├── main_logo.png │ │ │ │ ├── navbg.png │ │ │ │ ├── sider-toggle.png │ │ │ │ ├── tabs_close_hover.png │ │ │ │ ├── tabs_close_pf.png │ │ │ │ ├── tabs_close_pf0.png │ │ │ │ ├── top_bottombg.png │ │ │ │ ├── top_userbg.png │ │ │ │ ├── topbg.png │ │ │ │ ├── user.png │ │ │ │ ├── xg_left.png │ │ │ │ └── xg_right.png │ │ ├── js │ │ │ ├── base.js │ │ │ ├── custom.common.js │ │ │ ├── firstpage.js │ │ │ └── jquery.min.js │ │ └── uimaker │ │ │ ├── accordion.css │ │ │ ├── calendar.css │ │ │ ├── combobox.css │ │ │ ├── css │ │ │ ├── base.css │ │ │ └── login │ │ │ │ └── login.css │ │ │ ├── datagrid.css │ │ │ ├── datalist.css │ │ │ ├── datebox.css │ │ │ ├── dialog.css │ │ │ ├── easyui.css │ │ │ ├── filebox.css │ │ │ ├── fonticon.css │ │ │ ├── icon.css │ │ │ ├── icons │ │ │ ├── back.png │ │ │ ├── blank.gif │ │ │ ├── cancel.png │ │ │ ├── clear.png │ │ │ ├── cut.png │ │ │ ├── edit_add.png │ │ │ ├── edit_remove.png │ │ │ ├── filesave.png │ │ │ ├── filter.png │ │ │ ├── help.png │ │ │ ├── large_chart.png │ │ │ ├── large_clipart.png │ │ │ ├── large_picture.png │ │ │ ├── large_shapes.png │ │ │ ├── large_smartart.png │ │ │ ├── list.png │ │ │ ├── lock.png │ │ │ ├── man.png │ │ │ ├── mini_add.png │ │ │ ├── mini_edit.png │ │ │ ├── mini_refresh.png │ │ │ ├── more.png │ │ │ ├── no.png │ │ │ ├── ok.png │ │ │ ├── pencil.png │ │ │ ├── print.png │ │ │ ├── redo.png │ │ │ ├── reload.png │ │ │ ├── search.png │ │ │ ├── sum.png │ │ │ ├── tip.png │ │ │ └── undo.png │ │ │ ├── images │ │ │ ├── accordion_arrows.png │ │ │ ├── blank.gif │ │ │ ├── calendar_arrows.png │ │ │ ├── combo_arrow.png │ │ │ ├── datagrid_icons.png │ │ │ ├── datebox_arrow.png │ │ │ ├── layout_arrows.png │ │ │ ├── linkbutton_bg.png │ │ │ ├── loading.gif │ │ │ ├── menu_arrows.png │ │ │ ├── messager_icons.png │ │ │ ├── new │ │ │ │ ├── datebox_arrow.png │ │ │ │ ├── dialog_close.png │ │ │ │ ├── grid.png │ │ │ │ ├── pagination_icons_disabeld.png │ │ │ │ ├── pagination_icons_hover.png │ │ │ │ ├── panel_tools_hover.png │ │ │ │ ├── spinner_arrows.png │ │ │ │ ├── tab_dropdown.png │ │ │ │ ├── tab_dropdown_hover.png │ │ │ │ ├── tabs_close.png │ │ │ │ ├── tabs_close_hover.png │ │ │ │ ├── 下拉菜单.png │ │ │ │ ├── 面板.png │ │ │ │ └── 面板_如果左边图标可以直接用白色时候就只用这个.png │ │ │ ├── pagination_icons.png │ │ │ ├── panel_tools.png │ │ │ ├── searchbox_button.png │ │ │ ├── slider_handle.png │ │ │ ├── spinner_arrows.png │ │ │ ├── tabs_icons.png │ │ │ ├── tree_icons.png │ │ │ └── validatebox_warning.png │ │ │ ├── imgs │ │ │ └── login │ │ │ │ ├── login_box.png │ │ │ │ ├── login_box_w.png │ │ │ │ ├── login_logo.png │ │ │ │ ├── login_logo_w.png │ │ │ │ ├── login_top_left.png │ │ │ │ ├── login_top_right.png │ │ │ │ └── loginbg.png │ │ │ ├── js │ │ │ └── jquery.min.js │ │ │ ├── layout.css │ │ │ ├── linkbutton.css │ │ │ ├── menu.css │ │ │ ├── menubutton.css │ │ │ ├── messager.css │ │ │ ├── pagination.css │ │ │ ├── panel.css │ │ │ ├── progressbar.css │ │ │ ├── searchbox.css │ │ │ ├── slider.css │ │ │ ├── spinner.css │ │ │ ├── switchbutton.css │ │ │ ├── tab.css │ │ │ ├── textbox.css │ │ │ ├── tooltip.css │ │ │ ├── tree.css │ │ │ ├── view │ │ │ └── login │ │ │ │ ├── login.html │ │ │ │ └── login_white.html │ │ │ └── window.css │ │ └── sso │ │ ├── app │ │ └── register.js │ │ ├── log │ │ ├── access.js │ │ ├── lg.js │ │ └── op.js │ │ ├── main │ │ ├── main.css │ │ └── main.js │ │ ├── menu │ │ ├── menu.js │ │ └── menuTree.js │ │ ├── org │ │ ├── base_dept.js │ │ ├── org.js │ │ ├── orgTree.js │ │ └── orgType.js │ │ ├── perm │ │ ├── perm.js │ │ └── pgTree.js │ │ ├── position │ │ ├── base_position.js │ │ ├── position.js │ │ └── positionTree.js │ │ ├── role │ │ ├── org_role.js │ │ ├── position_role.js │ │ ├── role.js │ │ ├── roleTree.js │ │ ├── ug_role.js │ │ └── user_role.js │ │ ├── sms │ │ └── sms.js │ │ ├── ug │ │ ├── ug.js │ │ └── ugTree.js │ │ └── user │ │ └── user.js │ └── test │ └── java │ ├── base │ └── BaseTest.java │ ├── login │ ├── AbstractHttpUtil.java │ ├── HttpUtil.java │ └── LoginTest.java │ └── service │ └── ServiceTest.java └── sso-services ├── pom.xml └── service-aliyun ├── pom.xml └── src └── main └── java └── com └── tongwei └── aliyun ├── AliyunCommonConfiguration.java ├── AliyunConst.java ├── AliyunSms.java ├── AliyunSmsUtil.java └── EnableAliyun.java /.gitignore: -------------------------------------------------------------------------------- 1 | /.settings/ 2 | /.project 3 | .idea* 4 | 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 项目简介 2 | 本项目核心设计目的是提供企业级的单点登录,会话管理,权限认证。 3 | 子应用只需依赖sso-common,简单配置后项目中即可调用sso-server提供的主数据,权限,日志等服务; 4 | 优点:开发迅速、学习简单、轻量级、易扩展,支持与Spring-Cloud无缝集成。 5 | 6 | 登录账户:admin 密码:1234 7 | 8 | # 环境要求 9 | 1.jdk1.8 + 10 | 2.redis mysql 11 | 3.maven 12 | 4.开发工具:eclipse/idea 13 | 5.采用技术SpringBoot,Spring-Session,Redis,Mysql,sso-server端前端采用easyui 14 | 15 | 16 | # Features 17 | 1.提供企业级组织架构(公司/部门/岗位),主数据管理,RBAC权限设计 18 | 2.统一会话管理,统一配置权限/子应用菜单 19 | 3.应用横向拓展,支持nginx,spring-cloud负载均衡,支持docker 20 | 4.Redis异步汇集日志(LogUtil) 21 | 5.简单的鉴权操作(AuthUtil,注解,jsp标签) 22 | 6.可以很方便的在此基础上开发更多通用功能 23 | 7.10万用户同时在线时,redis内存占用大约为300M 24 | 25 | # 预览 26 |

27 | 用户管理 28 | 29 | 菜单管理 30 | 31 | 授权管理 32 | 33 | 基础服务 34 | 35 | 应用管理 36 | 37 |

38 | 39 | -------------------------------------------------------------------------------- /docs/images/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/docs/images/1.png -------------------------------------------------------------------------------- /docs/images/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/docs/images/2.png -------------------------------------------------------------------------------- /docs/images/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/docs/images/3.png -------------------------------------------------------------------------------- /docs/images/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/docs/images/4.png -------------------------------------------------------------------------------- /docs/images/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/docs/images/5.png -------------------------------------------------------------------------------- /docs/images/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/docs/images/6.png -------------------------------------------------------------------------------- /docs/images/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/docs/images/7.png -------------------------------------------------------------------------------- /docs/images/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/docs/images/8.png -------------------------------------------------------------------------------- /docs/说明.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/docs/说明.docx -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/anno/RequirePerms.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.anno; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.Inherited; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.Target; 7 | 8 | import com.tongwei.auth.security.RequireType; 9 | 10 | /** 11 | * @author yangz 12 | * @date 2018年2月5日 上午9:26:21 13 | * @description 需要拥有权限 14 | */ 15 | @Retention(java.lang.annotation.RetentionPolicy.RUNTIME) 16 | @Target({ java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.TYPE }) 17 | @Documented 18 | @Inherited 19 | public @interface RequirePerms { 20 | 21 | /** 格式permGroupCode1:perm1,perm2..., permGroupCode2:permA,permB... */ 22 | String[] value(); 23 | 24 | RequireType requireType() default RequireType.ANY; 25 | 26 | } 27 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/anno/RequireRoles.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.anno; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.Inherited; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.Target; 7 | 8 | import com.tongwei.auth.security.RequireType; 9 | 10 | /** 11 | * @author yangz 12 | * @date 2018年2月5日 上午9:26:21 13 | * @description 需要拥有角色 14 | */ 15 | @Retention(java.lang.annotation.RetentionPolicy.RUNTIME) 16 | @Target({ java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.TYPE }) 17 | @Documented 18 | @Inherited 19 | public @interface RequireRoles { 20 | 21 | String[] value(); 22 | 23 | RequireType requireType() default RequireType.ANY; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/anno/RequireUsers.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.anno; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.Inherited; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * @author yangz 10 | * @date 2018年2月5日 上午9:26:21 11 | * @description 指定用户loginNames访问 12 | */ 13 | @Retention(java.lang.annotation.RetentionPolicy.RUNTIME) 14 | @Target({ java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.TYPE }) 15 | @Documented 16 | @Inherited 17 | public @interface RequireUsers { 18 | 19 | String[] value(); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/core/SessionCore.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.core; 2 | 3 | import com.tongwei.auth.util.SessionUtil; 4 | 5 | /** 6 | * @author yangz 7 | * @date 2018年2月23日 下午3:42:21 8 | * @description session中存储的用户变量,请求上下文中使用 9 | */ 10 | public enum SessionCore { 11 | 12 | UserId { 13 | @SuppressWarnings("unchecked") 14 | @Override 15 | public Integer value() { 16 | return SessionUtil.getUserId(); 17 | } 18 | }, 19 | LoginName { 20 | @SuppressWarnings("unchecked") 21 | @Override 22 | public String value() { 23 | return SessionUtil.getLoginName(); 24 | } 25 | }, 26 | CellPhone { 27 | @SuppressWarnings("unchecked") 28 | @Override 29 | public String value() { 30 | return SessionUtil.getCellPhone(); 31 | } 32 | }, 33 | RealName { 34 | @SuppressWarnings("unchecked") 35 | @Override 36 | public String value() { 37 | return SessionUtil.getRealName(); 38 | } 39 | }; 40 | 41 | public T value() { 42 | return null; 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/helper/AuthValidateHelper.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.helper; 2 | 3 | import com.tongwei.auth.util.AuthUtil; 4 | 5 | /** 6 | * @author yangz 7 | * @date 2018年2月7日 上午10:51:15 8 | * @description 权限认证帮助类 9 | */ 10 | public class AuthValidateHelper { 11 | 12 | public static boolean hasPermAny(String[] permGroups) { 13 | for (String str : permGroups) { 14 | String[] split = str.split(":"); 15 | if (split.length != 2) { 16 | throw new IllegalArgumentException("value格式错误!,permGroupCode:permCode1,permCode2..."); 17 | } 18 | String permGroup = split[0]; 19 | String permsStr = split[1]; 20 | String[] perms = permsStr.split(","); 21 | if (AuthUtil.hasPermsAny(permGroup, perms)) { 22 | return true; 23 | } 24 | } 25 | return false; 26 | } 27 | 28 | public static boolean hasPermAll(String[] permGroups) { 29 | for (String str : permGroups) { 30 | String[] split = str.split(":"); 31 | if (split.length != 2) { 32 | throw new IllegalArgumentException("value格式错误!,permGroupCode:permCode1,permCode2..."); 33 | } 34 | String permGroup = split[0]; 35 | String permsStr = split[1]; 36 | String[] perms = permsStr.split(","); 37 | if (!AuthUtil.hasPermsAll(permGroup, perms)) { 38 | return false; 39 | } 40 | } 41 | return true; 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/log/AccessLog.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.log; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.Inherited; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * @author yangz 10 | * @date 2018年2月5日 上午9:26:21 11 | * @description 访问日志注解 12 | */ 13 | @Retention(java.lang.annotation.RetentionPolicy.RUNTIME) 14 | @Target({ java.lang.annotation.ElementType.METHOD }) 15 | @Documented 16 | @Inherited 17 | public @interface AccessLog { 18 | 19 | /** 20 | * 访问信息 21 | */ 22 | String value(); 23 | 24 | } 25 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/log/DBUserLogBean.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.log; 2 | 3 | import javax.persistence.Column; 4 | import javax.persistence.Table; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年2月3日 下午8:02:24 9 | * @description 持久化到mysql的日志,比如操作日志 10 | */ 11 | @Table(name = "tp_log_operate") 12 | public class DBUserLogBean extends LogBean { 13 | private static final long serialVersionUID = 1L; 14 | 15 | public DBUserLogBean() { 16 | } 17 | 18 | public DBUserLogBean(String appCode, String msg, String loginName) { 19 | super(appCode, msg); 20 | this.loginName = loginName; 21 | } 22 | 23 | // 操作人登陆名 24 | @Column(name = "login_name") 25 | protected String loginName; 26 | 27 | public String getLoginName() { 28 | return loginName; 29 | } 30 | 31 | public void setLoginName(String loginName) { 32 | this.loginName = loginName; 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/log/LogBean.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.log; 2 | 3 | import java.io.Serializable; 4 | import java.util.Date; 5 | 6 | import javax.persistence.Column; 7 | import javax.persistence.Transient; 8 | 9 | public class LogBean implements Serializable { 10 | private static final long serialVersionUID = 1L; 11 | 12 | // 应用编码 13 | @Column(name = "app_code") 14 | protected String appCode; 15 | // 发生时间 16 | @Column(name = "create_date") 17 | protected Date date = new Date(); 18 | // 内容 19 | @Column(name = "content") 20 | protected String msg; 21 | // 类型 1-操作日志db 2-access访问详情日志db 11-文件日志nouser 12-文件日志user 22 | @Transient 23 | protected int type; 24 | 25 | public LogBean() { 26 | } 27 | 28 | public LogBean(String appCode, String msg) { 29 | this.appCode = appCode; 30 | this.msg = msg; 31 | } 32 | 33 | public String getAppCode() { 34 | return appCode; 35 | } 36 | 37 | public void setAppCode(String appCode) { 38 | this.appCode = appCode; 39 | } 40 | 41 | public Date getDate() { 42 | return date; 43 | } 44 | 45 | public void setDate(Date date) { 46 | this.date = date; 47 | } 48 | 49 | public String getMsg() { 50 | return msg; 51 | } 52 | 53 | public void setMsg(String msg) { 54 | this.msg = msg; 55 | } 56 | 57 | public int getType() { 58 | return type; 59 | } 60 | 61 | public void setType(int type) { 62 | this.type = type; 63 | } 64 | 65 | } 66 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/log/TextUserLogBean.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.log; 2 | 3 | public class TextUserLogBean extends TextLogBean { 4 | 5 | private static final long serialVersionUID = 1L; 6 | 7 | public TextUserLogBean() { 8 | } 9 | 10 | public TextUserLogBean(String appCode, String msg, Throwable error, Class clz, String th, String loginName) { 11 | super(appCode, msg, error, clz, th); 12 | this.loginName = loginName; 13 | } 14 | 15 | // 操作人登陆名 16 | private String loginName; 17 | 18 | public String getLoginName() { 19 | return loginName; 20 | } 21 | 22 | public void setLoginName(String loginName) { 23 | this.loginName = loginName; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/model/AuthRole.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.model; 2 | 3 | import java.io.Serializable; 4 | import java.util.Set; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午4:15:40 9 | */ 10 | public class AuthRole implements Serializable { 11 | private static final long serialVersionUID = 1L; 12 | 13 | /** 权限集合 */ 14 | private Set perms; 15 | 16 | /** 菜单集合 */ 17 | private Set menus; 18 | 19 | public Set getPerms() { 20 | return perms; 21 | } 22 | 23 | public void setPerms(Set perms) { 24 | this.perms = perms; 25 | } 26 | 27 | public Set getMenus() { 28 | return menus; 29 | } 30 | 31 | public void setMenus(Set menus) { 32 | this.menus = menus; 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/model/OrgType.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.model; 2 | 3 | import java.io.Serializable; 4 | 5 | import javax.persistence.Id; 6 | import javax.persistence.Table; 7 | 8 | /** 9 | * @author yangz 10 | * @date 2018年1月29日 上午10:49:52 11 | * @description 组织类型 12 | */ 13 | @Table(name = "ts_org_type") 14 | public class OrgType implements Serializable { 15 | private static final long serialVersionUID = 1L; 16 | 17 | @Id 18 | private Integer id; 19 | 20 | /** 类型名称 */ 21 | private String name; 22 | 23 | /** 类型编码 */ 24 | private String code; 25 | 26 | private String remark; 27 | 28 | public Integer getId() { 29 | return id; 30 | } 31 | 32 | public void setId(Integer id) { 33 | this.id = id; 34 | } 35 | 36 | public String getName() { 37 | return name; 38 | } 39 | 40 | public void setName(String name) { 41 | this.name = name; 42 | } 43 | 44 | public String getCode() { 45 | return code; 46 | } 47 | 48 | public void setCode(String code) { 49 | this.code = code; 50 | } 51 | 52 | public String getRemark() { 53 | return remark; 54 | } 55 | 56 | public void setRemark(String remark) { 57 | this.remark = remark; 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/security/RememberMeType.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.security; 2 | 3 | /** 4 | * @author yangz 5 | * @date 2018年1月25日 下午7:15:18 6 | */ 7 | public enum RememberMeType { 8 | 9 | HOST, 10 | USER_AGENT, 11 | NONE 12 | } 13 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/security/RequireType.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.security; 2 | 3 | /** 4 | * @author yangz 5 | * @date 2018年2月6日 下午6:22:07 6 | * @description 满足条件 7 | */ 8 | public enum RequireType { 9 | ALL, ANY 10 | } 11 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/security/rule/AllUsersAcess.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.security.rule; 2 | 3 | /** 4 | * @author yangz 5 | * @date 2018年2月9日 上午11:48:22 6 | * @description 默认登录后即可访问非anno地址 7 | */ 8 | public class AllUsersAcess implements LoginAccessRule { 9 | 10 | @Override 11 | public boolean isAccess() { 12 | return true; 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/security/rule/CookieRememberMeRule.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.security.rule; 2 | 3 | import javax.servlet.http.Cookie; 4 | import javax.servlet.http.HttpServletRequest; 5 | 6 | import com.tongwei.Const; 7 | 8 | /** 9 | * @author yangz 10 | * @date 2018年2月9日 下午2:31:58 11 | * @description Cookie策略的记住规则 12 | */ 13 | public class CookieRememberMeRule extends AbstractRememberMeRule { 14 | 15 | @Override 16 | public String findGenerateValue(HttpServletRequest request) { 17 | Cookie[] cookies = request.getCookies(); 18 | if (cookies != null) { 19 | for (Cookie cookie : cookies) { 20 | String name = cookie.getName(); 21 | if (Const.AUTHUSER_REMEMBERME.equalsIgnoreCase(name)) { 22 | return cookie.getValue().trim(); 23 | } 24 | } 25 | } 26 | return null; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/security/rule/HeaderRememberMeRule.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.security.rule; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | 5 | import com.tongwei.Const; 6 | 7 | /** 8 | * @author yangz 9 | * @date 2018年2月9日 下午2:31:58 10 | * @description Header策略的记住规则 11 | */ 12 | public class HeaderRememberMeRule extends AbstractRememberMeRule { 13 | 14 | @Override 15 | public String findGenerateValue(HttpServletRequest request) { 16 | return request.getHeader(Const.AUTHUSER_REMEMBERME); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/security/rule/LoginAccessRule.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.security.rule; 2 | 3 | /** 4 | * @author yangz 5 | * @date 2018年2月9日 上午11:38:30 6 | * @description 能访问系统的规则接口 7 | *

isAccess 自定义验证规则 8 | */ 9 | public interface LoginAccessRule { 10 | 11 | boolean isAccess(); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/security/rule/RememberMeRule.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.security.rule; 2 | 3 | import javax.servlet.FilterChain; 4 | import javax.servlet.http.HttpServletRequest; 5 | import javax.servlet.http.HttpServletResponse; 6 | 7 | import com.tongwei.auth.security.RememberMeType; 8 | 9 | /** 10 | * @author yangz 11 | * @date 2018年1月25日 下午6:03:27 12 | * @description 记住登录验证安全规则 13 | */ 14 | public interface RememberMeRule { 15 | 16 | /** 17 | * 生成值 18 | */ 19 | String generateValue(HttpServletRequest request, RememberMeType type, Integer userId); 20 | 21 | /** 22 | * 获取值 23 | */ 24 | String findGenerateValue(HttpServletRequest request); 25 | 26 | /** 27 | * 验证值 28 | */ 29 | boolean validate(HttpServletRequest request, HttpServletResponse response, FilterChain chain, RememberMeType type, 30 | int rememberMeExpireTime); 31 | 32 | } 33 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/taglibs/jsp/HasPermsAllTagSupport.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.taglibs.jsp; 2 | 3 | import javax.servlet.jsp.JspException; 4 | import javax.servlet.jsp.tagext.TagSupport; 5 | 6 | import com.tongwei.auth.helper.AuthValidateHelper; 7 | 8 | /** 9 | * @author yangz 10 | * @date 2018年2月7日 上午10:02:53 11 | * @description 所有权限 12 | */ 13 | public class HasPermsAllTagSupport extends TagSupport { 14 | private static final long serialVersionUID = 1L; 15 | 16 | private String value; 17 | 18 | @Override 19 | public int doStartTag() throws JspException { 20 | String[] permGroups = value.split("\\|"); 21 | boolean hasPermAll = AuthValidateHelper.hasPermAll(permGroups); 22 | if (hasPermAll) { 23 | return EVAL_BODY_INCLUDE; 24 | } 25 | return SKIP_BODY; 26 | } 27 | 28 | public String getValue() { 29 | return value; 30 | } 31 | 32 | public void setValue(String value) { 33 | this.value = value; 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/taglibs/jsp/HasPermsTagSupport.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.taglibs.jsp; 2 | 3 | import javax.servlet.jsp.JspException; 4 | import javax.servlet.jsp.tagext.TagSupport; 5 | 6 | import com.tongwei.auth.helper.AuthValidateHelper; 7 | 8 | /** 9 | * @author yangz 10 | * @date 2018年2月7日 上午10:02:53 11 | * @description 任一满足权限 12 | */ 13 | public class HasPermsTagSupport extends TagSupport { 14 | private static final long serialVersionUID = 1L; 15 | 16 | private String value; 17 | 18 | @Override 19 | public int doStartTag() throws JspException { 20 | String[] permGroups = value.split("\\|"); 21 | boolean hasPermAny = AuthValidateHelper.hasPermAny(permGroups); 22 | if (hasPermAny) { 23 | return EVAL_BODY_INCLUDE; 24 | } 25 | return SKIP_BODY; 26 | } 27 | 28 | public String getValue() { 29 | return value; 30 | } 31 | 32 | public void setValue(String value) { 33 | this.value = value; 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/taglibs/jsp/HasRolesAllTagSupport.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.taglibs.jsp; 2 | 3 | import javax.servlet.jsp.JspException; 4 | import javax.servlet.jsp.tagext.TagSupport; 5 | 6 | import com.tongwei.auth.util.AuthUtil; 7 | 8 | /** 9 | * @author yangz 10 | * @date 2018年2月7日 上午10:02:53 11 | * @description 所有角色 12 | */ 13 | public class HasRolesAllTagSupport extends TagSupport { 14 | private static final long serialVersionUID = 1L; 15 | 16 | private String value; 17 | 18 | @Override 19 | public int doStartTag() throws JspException { 20 | String[] roleCodes = value.split(","); 21 | boolean hasRolesAll = AuthUtil.hasRolesAll(roleCodes); 22 | if (hasRolesAll) { 23 | return EVAL_BODY_INCLUDE; 24 | } 25 | return SKIP_BODY; 26 | } 27 | 28 | public String getValue() { 29 | return value; 30 | } 31 | 32 | public void setValue(String value) { 33 | this.value = value; 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/taglibs/jsp/HasRolesTagSupport.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.taglibs.jsp; 2 | 3 | import javax.servlet.jsp.JspException; 4 | import javax.servlet.jsp.tagext.TagSupport; 5 | 6 | import com.tongwei.auth.util.AuthUtil; 7 | 8 | /** 9 | * @author yangz 10 | * @date 2018年2月7日 上午10:02:53 11 | * @description 任一角色 12 | */ 13 | public class HasRolesTagSupport extends TagSupport { 14 | private static final long serialVersionUID = 1L; 15 | 16 | private String value; 17 | 18 | @Override 19 | public int doStartTag() throws JspException { 20 | String[] roleCodes = value.split(","); 21 | boolean hasRolesAny = AuthUtil.hasRolesAny(roleCodes); 22 | if (hasRolesAny) { 23 | return EVAL_BODY_INCLUDE; 24 | } 25 | return SKIP_BODY; 26 | } 27 | 28 | public String getValue() { 29 | return value; 30 | } 31 | 32 | public void setValue(String value) { 33 | this.value = value; 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/auth/taglibs/jsp/InUsersTagSupport.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.auth.taglibs.jsp; 2 | 3 | import javax.servlet.jsp.JspException; 4 | import javax.servlet.jsp.tagext.TagSupport; 5 | 6 | import com.tongwei.auth.util.AuthUtil; 7 | 8 | /** 9 | * @author yangz 10 | * @date 2018年2月7日 上午10:02:53 11 | * @description 满足指定用户 12 | */ 13 | public class InUsersTagSupport extends TagSupport { 14 | private static final long serialVersionUID = 1L; 15 | 16 | private String value; 17 | 18 | @Override 19 | public int doStartTag() throws JspException { 20 | String[] loginNames = value.split(","); 21 | boolean isInUsers = AuthUtil.isInUsers(loginNames); 22 | if (isInUsers) { 23 | return EVAL_BODY_INCLUDE; 24 | } 25 | return SKIP_BODY; 26 | } 27 | 28 | public String getValue() { 29 | return value; 30 | } 31 | 32 | public void setValue(String value) { 33 | this.value = value; 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/common/exception/ApplicationException.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.common.exception; 2 | 3 | import com.tongwei.common.model.ResultCode; 4 | 5 | /** 6 | * @author yangz 7 | * @date 2018年1月16日 上午10:51:30 8 | * @description 应用异常 9 | */ 10 | public class ApplicationException extends RuntimeException { 11 | 12 | private static final long serialVersionUID = -2678203134198782909L; 13 | 14 | public static final String MESSAGE = "应用异常"; 15 | 16 | protected int code = ResultCode.APPLICATION_ERROR; 17 | 18 | public ApplicationException() { 19 | super(MESSAGE); 20 | } 21 | 22 | public ApplicationException(String message) { 23 | super(message); 24 | } 25 | 26 | public ApplicationException(int code, String message) { 27 | super(message); 28 | this.code = code; 29 | } 30 | 31 | public ApplicationException(String message, Throwable cause) { 32 | super(message, cause); 33 | } 34 | 35 | public ApplicationException(int code, String message, Throwable cause) { 36 | super(message, cause); 37 | this.code = code; 38 | } 39 | 40 | public ApplicationException(Throwable cause) { 41 | super(cause); 42 | } 43 | 44 | public int getCode() { 45 | return code; 46 | } 47 | 48 | public void setCode(int code) { 49 | this.code = code; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/common/exception/AuthenticationExcption.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.common.exception; 2 | 3 | import com.tongwei.common.model.ResultCode; 4 | 5 | /** 6 | * @author yangz 7 | * @date 2018年1月16日 上午11:07:22 8 | * @description 认证异常 9 | */ 10 | public class AuthenticationExcption extends ApplicationException { 11 | 12 | private static final long serialVersionUID = 5214146953001236471L; 13 | 14 | public static final String MESSAGE = "用户认证异常"; 15 | 16 | public AuthenticationExcption() { 17 | super(MESSAGE); 18 | } 19 | 20 | public AuthenticationExcption(String message) { 21 | super(message); 22 | this.code = ResultCode.AUTHENTICATION_ERROR; 23 | } 24 | 25 | public AuthenticationExcption(int code, String message) { 26 | super(message); 27 | this.code = code; 28 | } 29 | 30 | public AuthenticationExcption(String message, Throwable cause) { 31 | super(message, cause); 32 | this.code = ResultCode.AUTHENTICATION_ERROR; 33 | } 34 | 35 | public AuthenticationExcption(int code, String message, Throwable cause) { 36 | super(message, cause); 37 | this.code = code; 38 | } 39 | 40 | public AuthenticationExcption(Throwable cause) { 41 | super(cause); 42 | this.code = ResultCode.AUTHENTICATION_ERROR; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/common/exception/CacheException.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.common.exception; 2 | 3 | import com.tongwei.common.model.ResultCode; 4 | 5 | /** 6 | * @author yangz 7 | * @date 2018年1月16日 上午10:52:38 8 | * @description redis缓存异常 9 | */ 10 | public class CacheException extends ApplicationException { 11 | 12 | private static final long serialVersionUID = -2678203134198782909L; 13 | 14 | public static final String MESSAGE = "缓存异常"; 15 | 16 | public CacheException() { 17 | super(MESSAGE); 18 | } 19 | 20 | public CacheException(String message) { 21 | super(message); 22 | this.code = ResultCode.CACHE_ERROR; 23 | } 24 | 25 | public CacheException(int code, String message) { 26 | super(message); 27 | this.code = code; 28 | } 29 | 30 | public CacheException(String message, Throwable cause) { 31 | super(message, cause); 32 | this.code = ResultCode.CACHE_ERROR; 33 | } 34 | 35 | public CacheException(int code, String message, Throwable cause) { 36 | super(message, cause); 37 | this.code = code; 38 | } 39 | 40 | public CacheException(Throwable cause) { 41 | super(cause); 42 | this.code = ResultCode.CACHE_ERROR; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/common/model/ResultCode.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.common.model; 2 | 3 | /** 4 | * @author yangz 5 | * @date 2018年1月16日 上午10:50:21 6 | * @description 基础返回码,具体业务返回码可继承ResultCode 7 | */ 8 | public class ResultCode { 9 | 10 | public final static int SUCCESS = 200;// 成功 11 | public final static int ERROR = 500;// 未知错误 12 | 13 | public final static int APPLICATION_ERROR = 2000;// 应用级错误 14 | public final static int AUTHENTICATION_ERROR = 2010;// 授权错误 15 | public final static int CACHE_ERROR = 2020;// 缓存访问错误 16 | 17 | // SSO 18 | public final static int SSO_LOGIN_REJECTED_ERROR = 1010; // 禁止登录 19 | public final static int SSO_PERMISSION_ERROR = 1020; // 没有访问权限 20 | } 21 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/common/util/MD5Util.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.common.util; 2 | 3 | import java.security.MessageDigest; 4 | import java.security.NoSuchAlgorithmException; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月26日 上午9:59:50 9 | * @description md5工具类 10 | */ 11 | public class MD5Util { 12 | 13 | public static String md5(String code) { 14 | MessageDigest md5; 15 | try { 16 | md5 = MessageDigest.getInstance("MD5"); 17 | } catch (NoSuchAlgorithmException e) { 18 | return null; 19 | } 20 | byte[] digest = md5.digest(code.getBytes()); 21 | return byte2hex(digest); 22 | } 23 | 24 | private static String byte2hex(byte[] b) { 25 | StringBuilder sb = new StringBuilder(); 26 | for (int n = 0; n < b.length; ++n) { 27 | String stmp = Integer.toHexString(b[n] & 0xFF); 28 | if (stmp.length() == 1) { 29 | sb.append("0"); 30 | } 31 | sb.append(stmp); 32 | } 33 | return sb.toString().toUpperCase(); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /sso-common/src/main/java/com/tongwei/common/util/ResponseUtil.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.common.util; 2 | 3 | import java.io.IOException; 4 | import java.io.PrintWriter; 5 | 6 | import javax.servlet.http.HttpServletResponse; 7 | 8 | import com.tongwei.common.model.ResultCode; 9 | 10 | /** 11 | * @author yangz 12 | * @date 2018年2月6日 下午7:24:23 13 | * @description 响应工具类 14 | */ 15 | public class ResponseUtil { 16 | 17 | private static final String ForbiddenJsonMsg = "{\"errorCode\":"+ResultCode.SSO_LOGIN_REJECTED_ERROR+",\"msg\":\"您被禁止登录!\"}"; 18 | 19 | private static final String UnAuthorizedJsonMsg = "{\"errorCode\":"+ResultCode.SSO_PERMISSION_ERROR+",\"msg\":\"您没有访问权限!\"}"; 20 | 21 | public static void responseJson(HttpServletResponse resp, String msg) { 22 | PrintWriter writer = null; 23 | try { 24 | resp.setCharacterEncoding("utf-8"); 25 | resp.setContentType("application/json; charset=utf-8"); 26 | resp.setStatus(200); 27 | writer = resp.getWriter(); 28 | writer.print(msg); 29 | } catch (IOException e) { 30 | e.printStackTrace(); 31 | } finally { 32 | if (writer != null) { 33 | writer.close(); 34 | } 35 | } 36 | } 37 | 38 | public static void responseUnAuthorizedJson(HttpServletResponse resp) { 39 | responseJson(resp, UnAuthorizedJsonMsg); 40 | } 41 | 42 | public static void responseForbiddenJson(HttpServletResponse resp) { 43 | responseJson(resp, ForbiddenJsonMsg); 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /sso-common/src/main/resources/application-sso-dev.yml: -------------------------------------------------------------------------------- 1 | sso: 2 | sys: 3 | rememberMeExpireTime: 604800 4 | redis: 5 | host: 127.0.0.1 6 | port: 6379 7 | database: 0 8 | timeout: 10000 9 | pool: 10 | max-active: 16 11 | max-wait: -1 12 | max-idle: 5 13 | min-idle: 0 14 | #password: 15 | #sentinel: 16 | #master: 17 | #nodes: -------------------------------------------------------------------------------- /sso-common/target/.gitignore: -------------------------------------------------------------------------------- 1 | /classes -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/aliyun/AliyunEnv.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.aliyun; 2 | 3 | 4 | /** 5 | * @author yangz 6 | * @date 2017年9月21日 下午2:19:41 7 | * @description 阿里云配置 8 | */ 9 | public class AliyunEnv { 10 | 11 | // 云通信短信API产品,开发者无需替换 12 | public static final String PRODUCT_SMS = "Dysmsapi"; 13 | // 短信产品域名,开发者无需替换 14 | public static final String DOMAIN_SMS = "dysmsapi.aliyuncs.com"; 15 | 16 | // 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找) 17 | public static String ACCESSKEY_ID; 18 | public static String ACCESSKEY_SECRET; 19 | 20 | } 21 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/aliyun/config/AliyunSsoConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.aliyun.config; 2 | 3 | import org.mybatis.spring.annotation.MapperScan; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.context.ApplicationContext; 6 | import org.springframework.context.annotation.Bean; 7 | import org.springframework.context.annotation.Configuration; 8 | 9 | import com.tongwei.aliyun.AliyunEnv; 10 | import com.tongwei.aliyun.AliyunSmsHandler; 11 | 12 | /** 13 | * @author yangz 14 | * @date 2018年2月28日 下午4:31:48 15 | * @description 阿里云服务配置 16 | */ 17 | @Configuration 18 | @ConfigurationProperties(prefix = "aliyun") 19 | @MapperScan(basePackages = { "com.tongwei.aliyun.mapper" }) 20 | public class AliyunSsoConfiguration { 21 | 22 | public void setAccessKeyId(String accessKeyId) { 23 | AliyunEnv.ACCESSKEY_ID = accessKeyId; 24 | } 25 | public void setAccessKeySecret(String accessKeySecret) { 26 | AliyunEnv.ACCESSKEY_SECRET = accessKeySecret; 27 | } 28 | 29 | @Bean(destroyMethod = "destroy") 30 | public AliyunSmsHandler aliyunSmsHandler(ApplicationContext context) { 31 | return new AliyunSmsHandler(); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/aliyun/config/SsoEnableAliyun.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.aliyun.config; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.Target; 6 | 7 | import org.springframework.context.annotation.Configuration; 8 | import org.springframework.context.annotation.Import; 9 | 10 | import com.tongwei.aliyun.AliyunCommonConfiguration; 11 | 12 | /** 13 | * @author yangz 14 | * @date 2018年1月16日 下午3:50:30 15 | * @description 启用阿里云服务配置 16 | */ 17 | @Retention(java.lang.annotation.RetentionPolicy.RUNTIME) 18 | @Target({ java.lang.annotation.ElementType.TYPE }) 19 | @Documented 20 | @Import({ AliyunSsoConfiguration.class,AliyunCommonConfiguration.class}) 21 | @Configuration 22 | public @interface SsoEnableAliyun { 23 | 24 | } 25 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/aliyun/mapper/SmsMapper.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.aliyun.mapper; 2 | 3 | import com.tongwei.aliyun.model.Sms; 4 | import com.tongwei.common.dao.CmMapper; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年3月1日 上午8:53:31 9 | * @description 阿里云短信 10 | */ 11 | public interface SmsMapper extends CmMapper { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/common/BaseController.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.common; 2 | 3 | import java.util.HashMap; 4 | import java.util.List; 5 | import java.util.Map; 6 | 7 | import javax.servlet.http.HttpServletRequest; 8 | import javax.servlet.http.HttpServletResponse; 9 | 10 | import org.slf4j.Logger; 11 | import org.slf4j.LoggerFactory; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | 14 | import com.tongwei.common.dao.BaseQuery; 15 | 16 | /** 17 | * @author yangz 18 | * @date 2017年3月31日 下午10:49:19 19 | */ 20 | public class BaseController { 21 | protected Logger logger = LoggerFactory.getLogger(getClass()); 22 | 23 | @Autowired 24 | protected HttpServletRequest request; 25 | 26 | @Autowired 27 | protected HttpServletResponse response; 28 | 29 | protected Map renderPage(List data, BaseQuery query) { 30 | HashMap map = new HashMap<>(2); 31 | map.put("rows", data); 32 | map.put("total", query.getTotal()); 33 | return map; 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/common/dao/CmMapper.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.common.dao; 2 | 3 | import java.util.List; 4 | 5 | import tk.mybatis.mapper.common.Mapper; 6 | import tk.mybatis.mapper.common.MySqlMapper; 7 | 8 | /** 9 | * @author yangz 10 | * @date 2017年9月18日 下午7:45:06 11 | */ 12 | public interface CmMapper extends Mapper, MySqlMapper { 13 | 14 | /** 15 | * 多表分页高级查询,需xml实现 16 | */ 17 | List queryMultiByPage(BaseQuery query); 18 | } 19 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/common/util/SpringUtils.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.common.util; 2 | 3 | import org.springframework.web.context.ContextLoader; 4 | import org.springframework.web.context.WebApplicationContext; 5 | 6 | /** 7 | * 获取Spring管理的Service实现 8 | * 9 | * @author Joe 10 | */ 11 | public final class SpringUtils { 12 | 13 | /** 14 | * 通过实体名称得它对应的service 15 | * 16 | * @param beanName 17 | */ 18 | @SuppressWarnings("unchecked") 19 | public static T getBean(String beanName) { 20 | // 获取当前运行环境下Spring上下文 21 | WebApplicationContext webApp = ContextLoader.getCurrentWebApplicationContext(); 22 | return (T) webApp.getBean(beanName); 23 | } 24 | 25 | /** 26 | * 按类型获取spring bean 实例 27 | * 28 | * @param beanType 29 | * @return 30 | */ 31 | public static T getBean(Class beanType) { 32 | // 获取当前运行环境下Spring上下文 33 | WebApplicationContext webApp = ContextLoader.getCurrentWebApplicationContext(); 34 | return webApp.getBean(beanType); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/StartApp.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso; 2 | 3 | import org.mybatis.spring.annotation.MapperScan; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.transaction.annotation.EnableTransactionManagement; 7 | 8 | import com.tongwei.aliyun.config.SsoEnableAliyun; 9 | import com.tongwei.auth.anno.EnableSSO; 10 | 11 | /** 12 | * @author yangz 13 | * @date 2018年1月16日 下午2:04:55 14 | * @description 认证端 15 | */ 16 | @SpringBootApplication 17 | @EnableSSO(enableRememberMe = true, enableAccessLog = true, enableAuthAnnotation = true) 18 | @EnableTransactionManagement 19 | @MapperScan(basePackages = { "com.tongwei.sso.mapper" }) 20 | @SsoEnableAliyun 21 | public class StartApp { 22 | 23 | public static void main(String[] args) { 24 | SpringApplication.run(StartApp.class, args); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/config/GlobalDefaultExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.config; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | import org.springframework.web.bind.annotation.ControllerAdvice; 8 | import org.springframework.web.bind.annotation.ExceptionHandler; 9 | import org.springframework.web.bind.annotation.ResponseBody; 10 | 11 | import com.tongwei.common.exception.ApplicationException; 12 | import com.tongwei.common.model.Result; 13 | import com.tongwei.common.model.ResultCode; 14 | import com.tongwei.common.util.ResultUtil; 15 | 16 | /** 17 | * @author yangz 18 | * @date 2018年1月19日 下午12:04:15 19 | * @description 全局异常处理 20 | */ 21 | @ControllerAdvice 22 | public class GlobalDefaultExceptionHandler { 23 | 24 | private static final Logger LOGGER = LoggerFactory.getLogger(GlobalDefaultExceptionHandler.class); 25 | 26 | @ExceptionHandler(Exception.class) 27 | @ResponseBody 28 | public Result defaultExceptionHandler(HttpServletRequest req, Exception e) { 29 | LOGGER.error(e.getMessage(), e);// 异常记录 30 | return ResultUtil.doFailure("服务器异常!"); 31 | } 32 | 33 | @ExceptionHandler(ApplicationException.class) 34 | @ResponseBody 35 | public Result applicationExceptionHandler(HttpServletRequest req, ApplicationException e) { 36 | LOGGER.error(e.getMessage(), e);// 异常记录 37 | return ResultUtil.response(ResultCode.APPLICATION_ERROR, e.getMessage()); 38 | } 39 | 40 | } -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/config/JSONConfig.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.config; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import org.springframework.boot.autoconfigure.web.HttpMessageConverters; 7 | import org.springframework.context.annotation.Bean; 8 | import org.springframework.context.annotation.Configuration; 9 | import org.springframework.http.MediaType; 10 | import org.springframework.http.converter.HttpMessageConverter; 11 | 12 | import com.alibaba.fastjson.serializer.SerializerFeature; 13 | import com.alibaba.fastjson.support.config.FastJsonConfig; 14 | import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; 15 | 16 | /** 17 | * @author yangz 18 | * @date 2018年1月30日 上午11:47:32 19 | * @description fastjson配置 20 | */ 21 | @Configuration 22 | public class JSONConfig { 23 | 24 | @Bean 25 | public HttpMessageConverters fastJsonHttpMessageConverters() { 26 | FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); 27 | FastJsonConfig fastJsonConfig = new FastJsonConfig(); 28 | fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); 29 | List fastMediaTypes = new ArrayList<>(); 30 | fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8); 31 | fastConverter.setSupportedMediaTypes(fastMediaTypes); 32 | fastConverter.setFastJsonConfig(fastJsonConfig); 33 | HttpMessageConverter converter = fastConverter; 34 | return new HttpMessageConverters(converter); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/config/RedisJobConfig.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.config; 2 | 3 | import org.springframework.context.ApplicationContext; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | 7 | import com.tongwei.sso.redis.LogHandler; 8 | import com.tongwei.sso.redis.RememberMeHandler; 9 | import com.tongwei.sso.redis.RoleChangeHandler; 10 | import com.tongwei.sso.redis.UserChangeHandler; 11 | 12 | /** 13 | * @author yangz 14 | * @date 2018年2月2日 下午12:31:09 15 | * @description 监听redis队列的任务配置 16 | */ 17 | @Configuration 18 | public class RedisJobConfig { 19 | 20 | @Bean(destroyMethod = "destroy") 21 | public RoleChangeHandler roleChangeHandler(ApplicationContext context) { 22 | return new RoleChangeHandler(); 23 | } 24 | 25 | @Bean(destroyMethod = "destroy") 26 | public UserChangeHandler userChangeHandler(ApplicationContext context) { 27 | return new UserChangeHandler(); 28 | } 29 | 30 | @Bean(destroyMethod = "destroy") 31 | public LogHandler logHandler(ApplicationContext context) { 32 | return new LogHandler(); 33 | } 34 | 35 | @Bean(destroyMethod = "destroy") 36 | public RememberMeHandler rememberMeHandler(ApplicationContext context) { 37 | return new RememberMeHandler(); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/config/SsoAcessRule.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.config; 2 | 3 | import java.util.Set; 4 | 5 | import org.springframework.context.annotation.Primary; 6 | import org.springframework.stereotype.Component; 7 | 8 | import com.tongwei.auth.model.AuthUser; 9 | import com.tongwei.auth.model.Role; 10 | import com.tongwei.auth.security.rule.LoginAccessRule; 11 | import com.tongwei.auth.util.AuthUtil; 12 | import com.tongwei.auth.util.LogUtil; 13 | 14 | /** 15 | * @author yangz 16 | * @date 2018年2月26日 上午9:35:34 17 | * @description SSO访问非anno地址的规则 18 | *

Primary 19 | */ 20 | @Component 21 | @Primary 22 | public class SsoAcessRule implements LoginAccessRule { 23 | 24 | @Override 25 | public boolean isAccess() { 26 | AuthUser authUser = AuthUtil.getAuthUser(); 27 | Set roles = authUser.getRoles(); 28 | if (roles == null || roles.isEmpty()) { 29 | LogUtil.logToDbOp("access denied"); 30 | return false; 31 | } 32 | for (Role role : roles) { 33 | if (role.getCode().startsWith("system")) { 34 | return true; 35 | } 36 | } 37 | LogUtil.logToDbOp("access denied"); 38 | return false; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/controller/RegisterController.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.controller; 2 | 3 | import org.springframework.stereotype.Controller; 4 | import org.springframework.web.bind.annotation.PostMapping; 5 | 6 | import com.tongwei.common.BaseController; 7 | import com.tongwei.common.model.Result; 8 | import com.tongwei.common.util.ResultUtil; 9 | 10 | /** 11 | * @author yangz 12 | * @date 2018年3月1日 上午10:35:47 13 | * @description 用户注册 14 | */ 15 | @Controller 16 | public class RegisterController extends BaseController { 17 | 18 | // 用户注册 19 | @PostMapping(value = "/register_test") 20 | public Result register() throws Exception { 21 | //注册用户有自己的用户组 22 | return ResultUtil.doFailure("按业务自行实现注册功能!"); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/controller/sms/SmsController.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.controller.sms; 2 | 3 | import java.util.List; 4 | 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.web.bind.annotation.GetMapping; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.RestController; 9 | 10 | import com.tongwei.aliyun.model.Sms; 11 | import com.tongwei.common.BaseController; 12 | import com.tongwei.sso.query.SmsQuery; 13 | import com.tongwei.sso.service.ISmsService; 14 | 15 | /** 16 | * @author yangz 17 | * @date 2018年1月31日 下午2:34:14 18 | * @description 短信管理 19 | */ 20 | @RestController 21 | @RequestMapping("/sms") 22 | public class SmsController extends BaseController { 23 | 24 | @Autowired 25 | ISmsService smsService; 26 | 27 | @GetMapping("/query") 28 | public Object access(SmsQuery query) { 29 | List list = smsService.queryByPage(query); 30 | return renderPage(list, query); 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/listener/SessionDestroyedListener.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.listener; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.context.ApplicationListener; 5 | import org.springframework.session.ExpiringSession; 6 | import org.springframework.session.data.redis.RedisOperationsSessionRepository; 7 | import org.springframework.session.events.SessionDestroyedEvent; 8 | import org.springframework.stereotype.Component; 9 | 10 | import com.tongwei.Const; 11 | import com.tongwei.auth.util.SessionUtil; 12 | import com.tongwei.sso.util.SessionExUtil; 13 | 14 | /** 15 | * @author yangz 16 | * @date 2018年1月17日 下午4:43:02 17 | * @description 监听Session destroy 18 | */ 19 | @Component 20 | public class SessionDestroyedListener implements ApplicationListener { 21 | 22 | @Autowired 23 | RedisOperationsSessionRepository redis; 24 | 25 | @Override 26 | public void onApplicationEvent(SessionDestroyedEvent event) { 27 | ExpiringSession session = event.getSession(); 28 | Integer userId = session.getAttribute(Const.SESSION_USER_ID); 29 | if(userId!=null){ 30 | SessionExUtil.deleteSidFromMap(userId, session.getId()); 31 | boolean b = SessionUtil.isOnlineUser(userId); 32 | if(b){//检查是否真的在线 33 | String[] sids = SessionExUtil.getSidsFromMap(userId); 34 | for (String sid : sids) { 35 | if(SessionUtil.isExpiredSessionId(sid)){//删除Map中过期的sessionId 36 | SessionExUtil.deleteSidFromMap(userId, sid); 37 | } 38 | } 39 | } 40 | } 41 | } 42 | 43 | } -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/mapper/BaseDeptMapper.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.mapper; 2 | 3 | import com.tongwei.common.dao.CmMapper; 4 | import com.tongwei.sso.model.BaseDept; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午2:03:33 9 | * @description 基础部门 10 | */ 11 | public interface BaseDeptMapper extends CmMapper { 12 | 13 | } -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/mapper/BasePositionMapper.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.mapper; 2 | 3 | import com.tongwei.common.dao.CmMapper; 4 | import com.tongwei.sso.model.BasePosition; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午2:03:33 9 | * @description 基础岗位 10 | */ 11 | public interface BasePositionMapper extends CmMapper { 12 | 13 | } -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/mapper/LogAccessMapper.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.mapper; 2 | 3 | import com.tongwei.auth.log.DBAccessUserLogBean; 4 | import com.tongwei.common.dao.CmMapper; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午2:03:33 9 | * @description 访问日志 10 | */ 11 | public interface LogAccessMapper extends CmMapper { 12 | 13 | } -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/mapper/LogLoginMapper.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.mapper; 2 | 3 | import com.tongwei.common.dao.CmMapper; 4 | import com.tongwei.sso.model.LoginLog; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午2:03:33 9 | * @description 登录日志 10 | */ 11 | public interface LogLoginMapper extends CmMapper { 12 | 13 | } -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/mapper/LogOperateMapper.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.mapper; 2 | 3 | import com.tongwei.auth.log.DBUserLogBean; 4 | import com.tongwei.common.dao.CmMapper; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午2:03:33 9 | * @description 操作日志 10 | */ 11 | public interface LogOperateMapper extends CmMapper { 12 | 13 | } -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/mapper/MenuMapper.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.mapper; 2 | 3 | import java.util.List; 4 | import java.util.Set; 5 | 6 | import org.apache.ibatis.annotations.Param; 7 | 8 | import com.tongwei.auth.model.Menu; 9 | import com.tongwei.common.dao.CmMapper; 10 | 11 | /** 12 | * @author yangz 13 | * @date 2018年1月17日 下午2:03:33 14 | * @description 菜单 15 | */ 16 | public interface MenuMapper extends CmMapper

{ 17 | 18 | /** 根据角色id查询菜单Set */ 19 | Set queryMenusForRedisByRoleId(Integer roleId); 20 | 21 | List getMenusByRoleIdAndAppCode(@Param("roleId") Integer roleId, @Param("appCode") String appCode); 22 | 23 | } -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/mapper/OrgMapper.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.mapper; 2 | 3 | import java.util.List; 4 | 5 | import com.tongwei.auth.model.Org; 6 | import com.tongwei.common.dao.CmMapper; 7 | 8 | /** 9 | * @author yangz 10 | * @date 2018年1月17日 下午2:03:33 11 | * @description 组织机构 12 | */ 13 | public interface OrgMapper extends CmMapper { 14 | 15 | List queryOrgByParentId(Integer parentId); 16 | 17 | Org getOrgById(Integer id); 18 | 19 | List getAllWithTypeName(); 20 | 21 | } -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/mapper/OrgTypeMapper.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.mapper; 2 | 3 | import com.tongwei.auth.model.OrgType; 4 | import com.tongwei.common.dao.CmMapper; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午2:03:33 9 | * @description 组织机构类别 10 | */ 11 | public interface OrgTypeMapper extends CmMapper { 12 | 13 | } -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/mapper/PermGroupMapper.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.mapper; 2 | 3 | import com.tongwei.common.dao.CmMapper; 4 | import com.tongwei.sso.model.PermGroup; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午2:03:33 9 | * @description 权限组 10 | */ 11 | public interface PermGroupMapper extends CmMapper { 12 | 13 | } -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/mapper/PermGroupMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/mapper/PermissionMapper.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.mapper; 2 | 3 | import java.util.List; 4 | import java.util.Set; 5 | 6 | import org.apache.ibatis.annotations.Param; 7 | 8 | import com.tongwei.auth.model.Permission; 9 | import com.tongwei.common.dao.CmMapper; 10 | 11 | /** 12 | * @author yangz 13 | * @date 2018年1月17日 下午2:03:33 14 | * @description 权限 15 | */ 16 | public interface PermissionMapper extends CmMapper { 17 | 18 | /** 根据角色ids集合查询权限Set */ 19 | Set queryPermsByRoleIds(@Param("ids") List ids); 20 | 21 | /** 根据角色id查询权限Set */ 22 | Set queryPermsByRoleId(Integer roleId); 23 | 24 | List getPermIdsByRoleIdAndAppCode(@Param("roleId") Integer roleId, @Param("appCode") String appCode); 25 | 26 | } -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/mapper/PositionMapper.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.mapper; 2 | 3 | import java.util.List; 4 | 5 | import com.tongwei.auth.model.Position; 6 | import com.tongwei.common.dao.CmMapper; 7 | 8 | /** 9 | * @author yangz 10 | * @date 2018年1月17日 下午2:03:33 11 | * @description 岗位 12 | */ 13 | public interface PositionMapper extends CmMapper { 14 | 15 | List queryPositionsByOrgId(Integer oId); 16 | 17 | Position getPositionById(Integer id); 18 | 19 | } -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/mapper/PositionMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 20 | 21 | 22 | 26 | 27 | 32 | 33 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/mapper/RegisterAppMapper.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.mapper; 2 | 3 | import com.tongwei.common.dao.CmMapper; 4 | import com.tongwei.sso.model.RegisterApp; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午2:03:33 9 | * @description 注册应用 10 | */ 11 | public interface RegisterAppMapper extends CmMapper { 12 | 13 | } -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/mapper/UserGroupMapper.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.mapper; 2 | 3 | import com.tongwei.auth.model.UserGroup; 4 | import com.tongwei.common.dao.CmMapper; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午2:03:33 9 | * @description 用户组 10 | */ 11 | public interface UserGroupMapper extends CmMapper { 12 | 13 | UserGroup getUgById(Integer id); 14 | 15 | } -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/mapper/UserGroupMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 18 | 19 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/model/BaseDept.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.model; 2 | 3 | import java.io.Serializable; 4 | 5 | import javax.persistence.Id; 6 | import javax.persistence.Table; 7 | 8 | /** 9 | * @author yangz 10 | * @date 2018年2月26日 下午3:19:14 11 | * @description 基础部门 12 | */ 13 | @Table(name="ts_base_dept") 14 | public class BaseDept implements Serializable{ 15 | private static final long serialVersionUID = 1L; 16 | 17 | @Id 18 | private Integer id; 19 | 20 | private String name; 21 | 22 | private String code; 23 | 24 | private String remark; 25 | 26 | public Integer getId() { 27 | return id; 28 | } 29 | 30 | public void setId(Integer id) { 31 | this.id = id; 32 | } 33 | 34 | public String getName() { 35 | return name; 36 | } 37 | 38 | public void setName(String name) { 39 | this.name = name; 40 | } 41 | 42 | public String getCode() { 43 | return code; 44 | } 45 | 46 | public void setCode(String code) { 47 | this.code = code; 48 | } 49 | 50 | public String getRemark() { 51 | return remark; 52 | } 53 | 54 | public void setRemark(String remark) { 55 | this.remark = remark; 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/model/BasePosition.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.model; 2 | 3 | import java.io.Serializable; 4 | 5 | import javax.persistence.Id; 6 | import javax.persistence.Table; 7 | 8 | /** 9 | * @author yangz 10 | * @date 2018年2月26日 下午3:19:14 11 | * @description 基础岗位 12 | */ 13 | @Table(name="ts_base_position") 14 | public class BasePosition implements Serializable{ 15 | private static final long serialVersionUID = 1L; 16 | 17 | @Id 18 | private Integer id; 19 | 20 | private String name; 21 | 22 | private String code; 23 | 24 | private String remark; 25 | 26 | public Integer getId() { 27 | return id; 28 | } 29 | 30 | public void setId(Integer id) { 31 | this.id = id; 32 | } 33 | 34 | public String getName() { 35 | return name; 36 | } 37 | 38 | public void setName(String name) { 39 | this.name = name; 40 | } 41 | 42 | public String getCode() { 43 | return code; 44 | } 45 | 46 | public void setCode(String code) { 47 | this.code = code; 48 | } 49 | 50 | public String getRemark() { 51 | return remark; 52 | } 53 | 54 | public void setRemark(String remark) { 55 | this.remark = remark; 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/query/BaseDeptQuery.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.query; 2 | 3 | import org.apache.commons.lang.StringUtils; 4 | 5 | import com.tongwei.common.dao.BaseQuery; 6 | import com.tongwei.sso.model.BaseDept; 7 | 8 | import tk.mybatis.mapper.entity.Example; 9 | import tk.mybatis.mapper.entity.Example.Criteria; 10 | 11 | /** 12 | * @author yangz 13 | * @date 2018年1月29日 下午12:43:19 14 | * @description 基础部门分页高级查询 15 | */ 16 | public class BaseDeptQuery extends BaseQuery { 17 | private static final long serialVersionUID = 1L; 18 | 19 | private String keyword; 20 | 21 | @Override 22 | public Example getExample() { 23 | this.example = new Example(entityClass); 24 | Criteria criteria = example.createCriteria(); 25 | if (StringUtils.isNotBlank(keyword)) { 26 | criteria.andLike("name", "%"+keyword+"%"); 27 | criteria.orEqualTo("code", keyword); 28 | } 29 | return example; 30 | } 31 | 32 | public String getKeyword() { 33 | return keyword; 34 | } 35 | 36 | public void setKeyword(String keyword) { 37 | this.keyword = keyword; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/query/BasePositionQuery.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.query; 2 | 3 | import org.apache.commons.lang.StringUtils; 4 | 5 | import com.tongwei.common.dao.BaseQuery; 6 | import com.tongwei.sso.model.BasePosition; 7 | 8 | import tk.mybatis.mapper.entity.Example; 9 | import tk.mybatis.mapper.entity.Example.Criteria; 10 | 11 | /** 12 | * @author yangz 13 | * @date 2018年1月29日 下午12:43:19 14 | * @description 基础岗位分页高级查询 15 | */ 16 | public class BasePositionQuery extends BaseQuery { 17 | private static final long serialVersionUID = 1L; 18 | 19 | private String keyword; 20 | 21 | @Override 22 | public Example getExample() { 23 | this.example = new Example(entityClass); 24 | Criteria criteria = example.createCriteria(); 25 | if (StringUtils.isNotBlank(keyword)) { 26 | criteria.andLike("name", "%"+keyword+"%"); 27 | criteria.orEqualTo("code", keyword); 28 | } 29 | return example; 30 | } 31 | 32 | public String getKeyword() { 33 | return keyword; 34 | } 35 | 36 | public void setKeyword(String keyword) { 37 | this.keyword = keyword; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/query/OrgTypeQuery.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.query; 2 | 3 | import org.apache.commons.lang.StringUtils; 4 | 5 | import com.tongwei.auth.model.OrgType; 6 | import com.tongwei.common.dao.BaseQuery; 7 | 8 | import tk.mybatis.mapper.entity.Example; 9 | import tk.mybatis.mapper.entity.Example.Criteria; 10 | 11 | /** 12 | * @author yangz 13 | * @date 2018年1月29日 下午12:43:19 14 | * @description 组织类型分页高级查询 15 | */ 16 | public class OrgTypeQuery extends BaseQuery { 17 | private static final long serialVersionUID = 1L; 18 | 19 | private String keyword; 20 | 21 | @Override 22 | public Example getExample() { 23 | this.example = new Example(entityClass); 24 | Criteria criteria = example.createCriteria(); 25 | if (StringUtils.isNotBlank(keyword)) { 26 | criteria.andLike("name", "%"+keyword+"%"); 27 | criteria.orEqualTo("code", keyword); 28 | } 29 | return example; 30 | } 31 | 32 | public String getKeyword() { 33 | return keyword; 34 | } 35 | 36 | public void setKeyword(String keyword) { 37 | this.keyword = keyword; 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/query/UserQuery.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.query; 2 | 3 | import com.tongwei.auth.model.User; 4 | import com.tongwei.common.dao.BaseQuery; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月29日 下午12:43:19 9 | * @description 用户分页高级查询 10 | */ 11 | public class UserQuery extends BaseQuery { 12 | private static final long serialVersionUID = 1L; 13 | 14 | // 组织id 15 | private Integer oId; 16 | 17 | // 用户组id 18 | private Integer ugId; 19 | 20 | // 岗位id 21 | private Integer posId; 22 | 23 | // 关键字查询 24 | private String keyword; 25 | 26 | public Integer getoId() { 27 | return oId; 28 | } 29 | 30 | public void setoId(Integer oId) { 31 | this.oId = oId; 32 | } 33 | 34 | public String getKeyword() { 35 | return keyword; 36 | } 37 | 38 | public void setKeyword(String keyword) { 39 | this.keyword = keyword; 40 | } 41 | 42 | public Integer getUgId() { 43 | return ugId; 44 | } 45 | 46 | public void setUgId(Integer ugId) { 47 | this.ugId = ugId; 48 | } 49 | 50 | public Integer getPosId() { 51 | return posId; 52 | } 53 | 54 | public void setPosId(Integer posId) { 55 | this.posId = posId; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/redis/RedisHandler.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.redis; 2 | 3 | import org.springframework.context.ApplicationContext; 4 | 5 | /** 6 | * @author yangz 7 | * @date 2018年2月3日 下午8:58:18 8 | * @description redis队列任务接口 9 | */ 10 | public interface RedisHandler { 11 | 12 | void excute(ApplicationContext ctx); 13 | 14 | void destroy(); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/IBaseDeptService.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service; 2 | 3 | import com.tongwei.common.dao.CmService; 4 | import com.tongwei.sso.model.BaseDept; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午3:13:15 9 | * @description 基础部门 10 | */ 11 | public interface IBaseDeptService extends CmService { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/IBasePositionService.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service; 2 | 3 | import com.tongwei.common.dao.CmService; 4 | import com.tongwei.sso.model.BasePosition; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午3:13:15 9 | * @description 基础岗位 10 | */ 11 | public interface IBasePositionService extends CmService { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/ILogAccessService.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service; 2 | 3 | import com.tongwei.auth.log.DBAccessUserLogBean; 4 | import com.tongwei.common.dao.CmService; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午3:13:15 9 | * @description 访问日志 10 | */ 11 | public interface ILogAccessService extends CmService { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/ILogLoginService.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service; 2 | 3 | import com.tongwei.common.dao.CmService; 4 | import com.tongwei.sso.model.LoginLog; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午3:13:15 9 | * @description 登录注销日志 10 | */ 11 | public interface ILogLoginService extends CmService { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/ILogOpService.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service; 2 | 3 | import com.tongwei.auth.log.DBUserLogBean; 4 | import com.tongwei.common.dao.CmService; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午3:13:15 9 | * @description 操作日志 10 | */ 11 | public interface ILogOpService extends CmService { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/IMenuService.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service; 2 | 3 | import com.tongwei.auth.model.Menu; 4 | import com.tongwei.common.dao.CmService; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午3:13:15 9 | * @description 菜单 10 | */ 11 | public interface IMenuService extends CmService { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/IOrgService.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service; 2 | 3 | import com.tongwei.auth.model.Org; 4 | import com.tongwei.common.dao.CmService; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午3:13:15 9 | * @description 组织 10 | */ 11 | public interface IOrgService extends CmService { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/IOrgTypeService.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service; 2 | 3 | import com.tongwei.auth.model.OrgType; 4 | import com.tongwei.common.dao.CmService; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午3:13:15 9 | * @description 组织类型 10 | */ 11 | public interface IOrgTypeService extends CmService { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/IPermGroupService.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service; 2 | 3 | import com.tongwei.common.dao.CmService; 4 | import com.tongwei.sso.model.PermGroup; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午3:13:15 9 | * @description 权限组 10 | */ 11 | public interface IPermGroupService extends CmService { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/IPermissionService.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service; 2 | 3 | import com.tongwei.auth.model.Permission; 4 | import com.tongwei.common.dao.CmService; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午3:13:15 9 | * @description 权限 10 | */ 11 | public interface IPermissionService extends CmService { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/IPositionService.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service; 2 | 3 | import com.tongwei.auth.model.Position; 4 | import com.tongwei.common.dao.CmService; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午3:13:15 9 | * @description 岗位 10 | */ 11 | public interface IPositionService extends CmService { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/IRegisterAppService.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service; 2 | 3 | import com.tongwei.common.dao.CmService; 4 | import com.tongwei.sso.model.RegisterApp; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午3:13:15 9 | * @description 注册应用 10 | */ 11 | public interface IRegisterAppService extends CmService { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/IRoleService.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service; 2 | 3 | import com.tongwei.auth.model.Role; 4 | import com.tongwei.common.dao.CmService; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午3:13:15 9 | * @description 角色 10 | */ 11 | public interface IRoleService extends CmService { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/ISmsService.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service; 2 | 3 | import com.tongwei.aliyun.model.Sms; 4 | import com.tongwei.common.dao.CmService; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午3:13:15 9 | * @description 短信记录 10 | */ 11 | public interface ISmsService extends CmService { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/IUserGroupService.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service; 2 | 3 | import com.tongwei.auth.model.UserGroup; 4 | import com.tongwei.common.dao.CmService; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午3:13:15 9 | * @description 用户组 10 | */ 11 | public interface IUserGroupService extends CmService { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/IUserService.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service; 2 | 3 | import com.tongwei.auth.model.User; 4 | import com.tongwei.common.dao.CmService; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年1月17日 下午3:13:15 9 | * @description 用户 10 | */ 11 | public interface IUserService extends CmService { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/impl/BaseDeptServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.tongwei.common.dao.CmServiceImpl; 6 | import com.tongwei.sso.model.BaseDept; 7 | import com.tongwei.sso.service.IBaseDeptService; 8 | 9 | /** 10 | * @author yangz 11 | * @date 2018年1月17日 下午3:16:59 12 | */ 13 | @Service 14 | public class BaseDeptServiceImpl extends CmServiceImpl implements IBaseDeptService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/impl/BasePositionServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.tongwei.common.dao.CmServiceImpl; 6 | import com.tongwei.sso.model.BasePosition; 7 | import com.tongwei.sso.service.IBasePositionService; 8 | 9 | /** 10 | * @author yangz 11 | * @date 2018年1月17日 下午3:16:59 12 | */ 13 | @Service 14 | public class BasePositionServiceImpl extends CmServiceImpl implements IBasePositionService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/impl/LogAccessServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.tongwei.auth.log.DBAccessUserLogBean; 6 | import com.tongwei.common.dao.CmServiceImpl; 7 | import com.tongwei.sso.service.ILogAccessService; 8 | 9 | /** 10 | * @author yangz 11 | * @date 2018年1月17日 下午3:16:59 12 | */ 13 | @Service 14 | public class LogAccessServiceImpl extends CmServiceImpl implements ILogAccessService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/impl/LogLoginServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.tongwei.common.dao.CmServiceImpl; 6 | import com.tongwei.sso.model.LoginLog; 7 | import com.tongwei.sso.service.ILogLoginService; 8 | 9 | /** 10 | * @author yangz 11 | * @date 2018年1月17日 下午3:16:59 12 | */ 13 | @Service 14 | public class LogLoginServiceImpl extends CmServiceImpl implements ILogLoginService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/impl/LogOpServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.tongwei.auth.log.DBUserLogBean; 6 | import com.tongwei.common.dao.CmServiceImpl; 7 | import com.tongwei.sso.service.ILogOpService; 8 | 9 | /** 10 | * @author yangz 11 | * @date 2018年1月17日 下午3:16:59 12 | */ 13 | @Service 14 | public class LogOpServiceImpl extends CmServiceImpl implements ILogOpService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/impl/MenuServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.tongwei.auth.model.Menu; 6 | import com.tongwei.common.dao.CmServiceImpl; 7 | import com.tongwei.sso.service.IMenuService; 8 | 9 | /** 10 | * @author yangz 11 | * @date 2018年1月17日 下午3:16:59 12 | */ 13 | @Service 14 | public class MenuServiceImpl extends CmServiceImpl implements IMenuService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/impl/OrgServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.tongwei.auth.model.Org; 6 | import com.tongwei.common.dao.CmServiceImpl; 7 | import com.tongwei.sso.service.IOrgService; 8 | 9 | /** 10 | * @author yangz 11 | * @date 2018年1月17日 下午3:16:59 12 | */ 13 | @Service 14 | public class OrgServiceImpl extends CmServiceImpl implements IOrgService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/impl/OrgTypeServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.tongwei.auth.model.OrgType; 6 | import com.tongwei.common.dao.CmServiceImpl; 7 | import com.tongwei.sso.service.IOrgTypeService; 8 | 9 | /** 10 | * @author yangz 11 | * @date 2018年1月17日 下午3:16:59 12 | */ 13 | @Service 14 | public class OrgTypeServiceImpl extends CmServiceImpl implements IOrgTypeService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/impl/PermGroupServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.tongwei.common.dao.CmServiceImpl; 6 | import com.tongwei.sso.model.PermGroup; 7 | import com.tongwei.sso.service.IPermGroupService; 8 | 9 | /** 10 | * @author yangz 11 | * @date 2018年1月17日 下午3:16:59 12 | */ 13 | @Service 14 | public class PermGroupServiceImpl extends CmServiceImpl implements IPermGroupService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/impl/PermissionServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.tongwei.auth.model.Permission; 6 | import com.tongwei.common.dao.CmServiceImpl; 7 | import com.tongwei.sso.service.IPermissionService; 8 | 9 | /** 10 | * @author yangz 11 | * @date 2018年1月17日 下午3:16:59 12 | */ 13 | @Service 14 | public class PermissionServiceImpl extends CmServiceImpl implements IPermissionService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/impl/PositionServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.tongwei.auth.model.Position; 6 | import com.tongwei.common.dao.CmServiceImpl; 7 | import com.tongwei.sso.service.IPositionService; 8 | 9 | /** 10 | * @author yangz 11 | * @date 2018年1月17日 下午3:16:59 12 | */ 13 | @Service 14 | public class PositionServiceImpl extends CmServiceImpl implements IPositionService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/impl/RegisterAppServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.tongwei.common.dao.CmServiceImpl; 6 | import com.tongwei.sso.model.RegisterApp; 7 | import com.tongwei.sso.service.IRegisterAppService; 8 | 9 | /** 10 | * @author yangz 11 | * @date 2018年1月17日 下午3:16:59 12 | */ 13 | @Service 14 | public class RegisterAppServiceImpl extends CmServiceImpl implements IRegisterAppService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/impl/RoleServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.tongwei.auth.model.Role; 6 | import com.tongwei.common.dao.CmServiceImpl; 7 | import com.tongwei.sso.service.IRoleService; 8 | 9 | /** 10 | * @author yangz 11 | * @date 2018年1月17日 下午3:16:59 12 | */ 13 | @Service 14 | public class RoleServiceImpl extends CmServiceImpl implements IRoleService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/impl/SmsServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.tongwei.aliyun.model.Sms; 6 | import com.tongwei.common.dao.CmServiceImpl; 7 | import com.tongwei.sso.service.ISmsService; 8 | 9 | /** 10 | * @author yangz 11 | * @date 2018年1月17日 下午3:16:59 12 | */ 13 | @Service 14 | public class SmsServiceImpl extends CmServiceImpl implements ISmsService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/impl/UserGroupServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.tongwei.auth.model.UserGroup; 6 | import com.tongwei.common.dao.CmServiceImpl; 7 | import com.tongwei.sso.service.IUserGroupService; 8 | 9 | /** 10 | * @author yangz 11 | * @date 2018年1月17日 下午3:16:59 12 | */ 13 | @Service 14 | public class UserGroupServiceImpl extends CmServiceImpl implements IUserGroupService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/service/impl/UserServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.tongwei.auth.model.User; 6 | import com.tongwei.common.dao.CmServiceImpl; 7 | import com.tongwei.sso.service.IUserService; 8 | 9 | /** 10 | * @author yangz 11 | * @date 2018年1月17日 下午3:16:59 12 | */ 13 | @Service 14 | public class UserServiceImpl extends CmServiceImpl implements IUserService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/tag/CtxTag.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.tag; 2 | 3 | import java.io.IOException; 4 | 5 | import javax.servlet.http.HttpServletRequest; 6 | import javax.servlet.jsp.JspException; 7 | import javax.servlet.jsp.JspWriter; 8 | import javax.servlet.jsp.tagext.TagSupport; 9 | 10 | /** 11 | * @author yangz 12 | * @date 2018年2月26日 上午10:41:04 13 | * @description context path 14 | */ 15 | public class CtxTag extends TagSupport { 16 | 17 | private static final long serialVersionUID = 1977225350330714103L; 18 | 19 | @Override 20 | public int doStartTag() throws JspException { 21 | JspWriter out = pageContext.getOut(); 22 | HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); 23 | String contextPath = request.getContextPath(); 24 | try { 25 | out.write(contextPath); 26 | } catch (IOException e) { 27 | e.printStackTrace(); 28 | } 29 | return super.doStartTag(); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/tag/StaticTag.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.tag; 2 | 3 | import java.io.IOException; 4 | 5 | import javax.servlet.http.HttpServletRequest; 6 | import javax.servlet.jsp.JspException; 7 | import javax.servlet.jsp.JspWriter; 8 | import javax.servlet.jsp.tagext.TagSupport; 9 | 10 | /** 11 | * @author yangz 12 | * @date 2018年2月26日 上午10:49:21 13 | * @description static路径 14 | */ 15 | public class StaticTag extends TagSupport { 16 | 17 | private static final long serialVersionUID = 1977225350330714103L; 18 | 19 | @Override 20 | public int doStartTag() throws JspException { 21 | JspWriter out = pageContext.getOut(); 22 | HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); 23 | String contextPath = request.getContextPath(); 24 | try { 25 | out.write(contextPath + "/static"); 26 | } catch (IOException e) { 27 | e.printStackTrace(); 28 | } 29 | return super.doStartTag(); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/util/AppUtils.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.util; 2 | 3 | import java.util.HashSet; 4 | import java.util.regex.Matcher; 5 | import java.util.regex.Pattern; 6 | 7 | import com.github.pagehelper.util.StringUtil; 8 | import com.tongwei.auth.model.Role; 9 | 10 | /** 11 | * @author yangz 12 | * @date 2018年1月31日 上午10:16:06 13 | * @description 辅助工具类 14 | */ 15 | public class AppUtils { 16 | 17 | private static final Pattern CODE_PATTERN = Pattern.compile("[0-9A-Za-z_]*"); 18 | 19 | public static boolean validateCode(String code) { 20 | if(StringUtil.isEmpty(code)){ 21 | return false; 22 | } 23 | Matcher matcher = CODE_PATTERN.matcher(code); 24 | return matcher.matches(); 25 | } 26 | 27 | /** 28 | * 递归处理角色 29 | */ 30 | public static void recursionRoles(HashSet cleanRoles, Role role) { 31 | Role parentRole = role.getParentRole(); 32 | if (parentRole == null) { 33 | cleanRoles.add(role); 34 | } else { 35 | role.setParentId(null); 36 | role.setParentRole(null); 37 | cleanRoles.add(role); 38 | recursionRoles(cleanRoles, parentRole); 39 | } 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /sso-server/src/main/java/com/tongwei/sso/util/PasswordUtil.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.sso.util; 2 | 3 | import com.tongwei.auth.util.AESUtil; 4 | 5 | /** 6 | * @author yangz 7 | * @date 2018年2月3日 下午5:17:21 8 | * @description 密码工具类 9 | */ 10 | public class PasswordUtil { 11 | 12 | // 密码加密的盐值 13 | private static String encodePwdSalt = "yangz@919573416@qq.com"; 14 | 15 | public static String encodePwd(String pwd) throws Exception { 16 | return AESUtil.encodeToHex(encodePwdSalt, pwd); 17 | } 18 | 19 | public static String decodePwd(String pwd) throws Exception { 20 | return AESUtil.decodeFromHex(encodePwdSalt, pwd); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /sso-server/src/main/resources/application-dev.yml: -------------------------------------------------------------------------------- 1 | #开发环境 2 | #日志配置 3 | log: 4 | level: INFO 5 | path: /data/sso_logs 6 | 7 | #mybatis: 8 | # configLocation: classpath:config/mybatis/mybatis-config.xml 9 | 10 | spring: 11 | datasource: 12 | url: jdbc:mysql://127.0.0.1:3306/tw-sso?useUnicode=true&characterEncoding=utf-8&useSSL=false 13 | username: root 14 | password: root 15 | 16 | devtools: 17 | restart: 18 | enabled: true 19 | 20 | server: 21 | port: 8081 22 | context-path: / 23 | 24 | sso: 25 | sys: 26 | #登录地址,子应用可以自定义登录页面 27 | loginUrl: http://localhost:8081/login.jsp 28 | setCookieUrl: http://localhost:8081/setcookie 29 | #登录成功后跳转的地址 30 | successUrl: http://localhost:8081/ -------------------------------------------------------------------------------- /sso-server/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | #激活配置文件, 加sso-common包配置文件 3 | profiles: 4 | active: dev,sso-dev 5 | #mvc配置 6 | mvc: 7 | view: 8 | prefix: /WEB-INF/sso/ 9 | suffix: .jsp 10 | #数据源配置 11 | datasource: 12 | type: com.alibaba.druid.pool.DruidDataSource 13 | driverClassName: com.mysql.jdbc.Driver 14 | initialSize: 5 15 | minIdle: 5 16 | maxActive: 20 17 | maxWait: 60000 18 | validationQuery: SELECT 1 FROM DUAL 19 | 20 | #mybatis配置 21 | mybatis: 22 | type-aliases-package: com.tongwei.auth.model 23 | mapper-locations: classpath:com/tongwei/sso/mapper/*Mapper.xml 24 | 25 | mapper: 26 | mappers: com.tongwei.common.dao.CmMapper 27 | not-empty: false 28 | identity: MYSQL 29 | 30 | pagehelper: 31 | helperDialect: mysql 32 | reasonable: true 33 | supportMethodsArguments: true 34 | params: count=countSql 35 | 36 | #单点登录配置 37 | sso: 38 | sys: 39 | anno: /user/validate*,/changePwd,/register* 40 | staticSuffixs: .js,.css,.jpg,.png,.ico 41 | appCode: sso 42 | isCenter: true 43 | encodeSalt: yangz@919573416@qq.com 44 | 45 | #阿里云服务配置 46 | aliyun: 47 | accessKeyId: xxx 48 | accessKeySecret: xxxx -------------------------------------------------------------------------------- /sso-server/src/main/resources/config/mybatis/mybatis-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/WEB-INF/lib/alicom-mns-receive-sdk-0.0.1-SNAPSHOT.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/WEB-INF/lib/alicom-mns-receive-sdk-0.0.1-SNAPSHOT.jar -------------------------------------------------------------------------------- /sso-server/src/main/webapp/WEB-INF/lib/aliyun-java-sdk-core-3.2.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/WEB-INF/lib/aliyun-java-sdk-core-3.2.3.jar -------------------------------------------------------------------------------- /sso-server/src/main/webapp/WEB-INF/lib/aliyun-java-sdk-dybaseapi-1.0.0-SNAPSHOT.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/WEB-INF/lib/aliyun-java-sdk-dybaseapi-1.0.0-SNAPSHOT.jar -------------------------------------------------------------------------------- /sso-server/src/main/webapp/WEB-INF/lib/aliyun-java-sdk-dysmsapi-1.0.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/WEB-INF/lib/aliyun-java-sdk-dysmsapi-1.0.0.jar -------------------------------------------------------------------------------- /sso-server/src/main/webapp/WEB-INF/lib/aliyun-sdk-mns-1.1.8.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/WEB-INF/lib/aliyun-sdk-mns-1.1.8.jar -------------------------------------------------------------------------------- /sso-server/src/main/webapp/WEB-INF/sso/firstPage.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=utf-8" %> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | <%@include file='/common.jsp' %> 11 | 12 | 13 |
14 |

欢迎您: ${sessionScope.SESSION_USER_REALNAME}

15 |
SpringBoot Spring-session Redis
16 |
17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/WEB-INF/sso/log/access.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=utf-8" %> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | <%@include file='/common.jsp' %> 11 | 12 | 13 | 14 | 15 | 16 | 22 | 23 | 24 | 25 |
26 |
27 |
28 |
    29 |
    30 |
    31 |
    32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/WEB-INF/sso/log/lg.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=utf-8" %> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | <%@include file='/common.jsp' %> 11 | 12 | 13 | 14 | 15 | 16 | 22 | 23 | 24 | 25 |
    26 |
    27 |
    28 |
      29 |
      30 |
      31 |
      32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/WEB-INF/sso/log/op.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=utf-8" %> 2 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | <%@include file='/common.jsp' %> 11 | 12 | 13 | 14 | 15 | 16 | 22 | 23 | 24 | 25 |
      26 |
      27 |
      28 |
        29 |
        30 |
        31 |
        32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/WEB-INF/sso/sms/sms.jsp: -------------------------------------------------------------------------------- 1 | <%@ page language="java" contentType="text/html; charset=utf-8" %> 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | <%@include file='/common.jsp' %> 10 | 11 | 12 | 13 | 14 | 15 | 21 | 22 | 23 | 24 |
        25 |
        26 |
        27 |
          28 |
          29 |
          30 |
          31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/WEB-INF/tlds/SysTag.tld: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1.0 4 | 1.2 5 | sys 6 | http://www.tongwei.com/sys 7 | sys 8 | sys properties 9 | 10 | ctx 11 | com.tongwei.sso.tag.CtxTag 12 | empty 13 | 14 | 15 | static 16 | com.tongwei.sso.tag.StaticTag 17 | empty 18 | 19 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/common.jsp: -------------------------------------------------------------------------------- 1 | <%@taglib prefix="s" uri="http://www.tongwei.com/sys" %> 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/favicon.ico -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/accordion_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/accordion_arrows.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/blank.gif -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/calendar_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/calendar_arrows.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/combo_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/combo_arrow.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/datagrid_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/datagrid_icons.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/datebox_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/datebox_arrow.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/layout_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/layout_arrows.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/linkbutton_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/linkbutton_bg.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/loading.gif -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/menu_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/menu_arrows.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/messager_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/messager_icons.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/new/datebox_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/new/datebox_arrow.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/new/dialog_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/new/dialog_close.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/new/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/new/grid.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/new/pagination_icons_disabeld.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/new/pagination_icons_disabeld.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/new/pagination_icons_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/new/pagination_icons_hover.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/new/panel_tools_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/new/panel_tools_hover.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/new/spinner_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/new/spinner_arrows.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/new/tab_dropdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/new/tab_dropdown.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/new/tab_dropdown_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/new/tab_dropdown_hover.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/new/tabs_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/new/tabs_close.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/new/tabs_close_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/new/tabs_close_hover.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/new/下拉菜单.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/new/下拉菜单.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/new/面板.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/new/面板.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/new/面板_如果左边图标可以直接用白色时候就只用这个.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/new/面板_如果左边图标可以直接用白色时候就只用这个.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/pagination_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/pagination_icons.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/panel_tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/panel_tools.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/searchbox_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/searchbox_button.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/slider_handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/slider_handle.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/spinner_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/spinner_arrows.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/tabs_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/tabs_icons.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/tree_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/tree_icons.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyui/images/validatebox_warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyui/images/validatebox_warning.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/accordion.css: -------------------------------------------------------------------------------- 1 | .accordion{overflow:hidden;border-width:1px;border-style:solid}.accordion .accordion-header{border-width:0 0 1px;cursor:pointer}.accordion .accordion-body{border-width:0 0 1px}.accordion-noborder{border-width:0}.accordion-noborder .accordion-header{border-width:0 0 1px}.accordion-noborder .accordion-body{border-width:0 0 1px}.accordion-collapse{background:url("images/accordion_arrows.png") no-repeat 0 0}.accordion-expand{background:url("images/accordion_arrows.png") no-repeat -16px 0}.accordion{background:#ffffff;border-color:#bfbfbf}.accordion .accordion-header{background:#e3e3e3;filter:none}.accordion .accordion-header-selected{background:#fef0b6}.accordion .accordion-header-selected .panel-title{color:#000000} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/combobox.css: -------------------------------------------------------------------------------- 1 | .combobox-item,.combobox-group,.combobox-stick{font-size:12px;padding:3px}.combobox-item-disabled{opacity:0.5;filter:alpha(opacity=50)}.combobox-gitem{padding-left:10px}.combobox-group,.combobox-stick{font-weight:bold}.combobox-stick{position:absolute;top:1px;left:1px;right:1px;background:inherit}.combobox-item-hover{background-color:#e8e8e8;color:#000000}.combobox-item-selected{background-color:#1da02b;color:#fff}.combobox-icon{display:inline-block;width:16px;height:16px;vertical-align:middle;margin-right:2px} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/datalist.css: -------------------------------------------------------------------------------- 1 | .datalist .datagrid-header{border-width:0}.datalist .datagrid-group,.m-list .m-list-group{height:25px;line-height:25px;font-weight:bold;overflow:hidden;background-color:#fafafa;border-style:solid;border-width:0 0 1px 0;border-color:#ebebeb}.datalist .datagrid-group-expander{display:none}.datalist .datagrid-group-title{padding:0 4px}.datalist .datagrid-btable{width:100%;table-layout:fixed}.datalist .datagrid-row td{border-style:solid;border-left-color:transparent;border-right-color:transparent;border-bottom-width:0}.datalist-lines .datagrid-row td{border-bottom-width:1px}.datalist .datagrid-cell,.m-list li{width:auto;height:auto;padding:2px 4px;line-height:18px;position:relative;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.datalist-link,.m-list li>a{display:block;position:relative;cursor:pointer;color:#404040;text-decoration:none;overflow:hidden;margin:-2px -4px;padding:2px 4px;padding-right:16px;line-height:18px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.datalist-link::after,.m-list li>a::after{position:absolute;display:block;width:8px;height:8px;content:'';right:6px;top:50%;margin-top:-4px;border-style:solid;border-width:1px 1px 0 0;-ms-transform:rotate(45deg);-moz-transform:rotate(45deg);-webkit-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.m-list{margin:0;padding:0;list-style:none}.m-list li{border-style:solid;border-width:0 0 1px 0;border-color:#ebebeb}.m-list li>a:hover{background:#eee;color:#404040}.m-list .m-list-group{padding:0 4px} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/datebox.css: -------------------------------------------------------------------------------- 1 | .datebox-calendar-inner{height:180px}.datebox-button{padding:0 5px;text-align:center}.datebox-button a{line-height:22px;font-size:12px;font-weight:bold;text-decoration:none;opacity:0.6;filter:alpha(opacity=60)}.datebox-button a:hover{opacity:1.0;filter:alpha(opacity=100)}.datebox-current,.datebox-close{float:left}.datebox-close{float:right}.datebox .combo-arrow{position:relative;right:8px;width:16px !important;background-image:url('images/new/datebox_arrow.png?1464356513');background-position:0 center;background-repeat:no-repeat}.datebox.textbox-focused .combo-arrow{background-position:-16px center}.datebox-button{background-color:#fafafa}.datebox-button a{color:#444} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/dialog.css: -------------------------------------------------------------------------------- 1 | .dialog-content{overflow:auto}.dialog-toolbar{position:relative;padding:2px 5px}.dialog-tool-separator{float:left;height:24px;border-left:1px solid #ccc;border-right:1px solid #fff;margin:2px 1px}.dialog-button{position:relative;top:-1px;padding:5px;text-align:right}.dialog-button .l-btn{margin-left:5px}.dialog-toolbar,.dialog-button{background:#F4F4F4;border-width:1px;border-style:solid}.dialog-toolbar{border-color:#F4F4F4}.dialog-button{border-color:#F4F4F4}.window-thinborder .dialog-toolbar{border-left:transparent;border-right:transparent;border-top-color:#F4F4F4}.window-thinborder .dialog-button{top:0px;padding:5px 8px 8px 8px;border-left:transparent;border-right:transparent;border-bottom:transparent}.panel.window{padding:0}.window.dialog .window-header,.panel.dialog .window-header{height:38px;line-height:38px;color:#fff;padding:0;background:#1da028}.window.dialog .panel-title,.panel.dialog .panel-title{height:38px;line-height:38px;color:#fff;font-size:13px}.window.dialog,.window.dialog .window-body,.panel.dialog,.panel.dialog .window-body{border:1px solid #bfbfbf}.window.dialog .window-header,.panel.dialog .window-header{padding-left:5px}.dialog.window .window-header .panel-icon{left:6px;margin-top:-8px}.dialog .panel-icon,.dialog .panel-tool{position:absolute;top:50%;margin-top:-8px;height:20px;overflow:hidden}.dialog .panel-tool-close{width:20px !important;height:20px !important;background:url('images/new/dialog_close.png?1464355571') no-repeat 0 0px}.dialog .panel-tool-close:hover{background-color:#1da028 !important;background:url('images/new/dialog_close.png?1464355571') no-repeat -20px 0px} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/filebox.css: -------------------------------------------------------------------------------- 1 | .filebox .textbox-value{vertical-align:top;position:absolute;top:0;left:-5000px}.filebox-label{display:inline-block;position:absolute;width:100%;height:100%;cursor:pointer;left:0;top:0;z-index:10;background:url("images/blank.gif") no-repeat}.l-btn-disabled .filebox-label{cursor:default} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/fonticon.css: -------------------------------------------------------------------------------- 1 | @font-face{font-family:'iconfont';src:url('fonts/iconfont.eot');src:url('fonts/iconfont.eot?#iefix') format("embedded-opentype"),url('fonts/iconfont.woff') format("woff"),url('fonts/iconfont.ttf') format("truetype"),url('fonts/iconfont.svg#iconfont') format("svg")}.iconfont{font-family:"iconfont" !important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:0.2px;-moz-osx-font-smoothing:grayscale} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/back.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/blank.gif -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/cancel.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/clear.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/cut.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/edit_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/edit_add.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/edit_remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/edit_remove.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/filesave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/filesave.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/filter.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/help.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/large_chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/large_chart.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/large_clipart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/large_clipart.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/large_picture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/large_picture.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/large_shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/large_shapes.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/large_smartart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/large_smartart.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/list.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/lock.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/man.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/man.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/mini_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/mini_add.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/mini_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/mini_edit.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/mini_refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/mini_refresh.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/more.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/no.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/no.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/ok.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/pencil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/pencil.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/print.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/print.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/redo.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/reload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/reload.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/search.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/sum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/sum.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/tip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/tip.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/icons/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/icons/undo.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/accordion_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/accordion_arrows.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/blank.gif -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/calendar_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/calendar_arrows.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/combo_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/combo_arrow.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/datagrid_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/datagrid_icons.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/datebox_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/datebox_arrow.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/layout_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/layout_arrows.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/linkbutton_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/linkbutton_bg.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/loading.gif -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/menu_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/menu_arrows.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/messager_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/messager_icons.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/new/datebox_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/new/datebox_arrow.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/new/dialog_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/new/dialog_close.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/new/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/new/grid.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/new/pagination_icons_disabeld.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/new/pagination_icons_disabeld.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/new/pagination_icons_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/new/pagination_icons_hover.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/new/panel_tools_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/new/panel_tools_hover.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/new/spinner_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/new/spinner_arrows.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/new/tab_dropdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/new/tab_dropdown.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/new/tab_dropdown_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/new/tab_dropdown_hover.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/new/tabs_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/new/tabs_close.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/new/tabs_close_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/new/tabs_close_hover.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/new/下拉菜单.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/new/下拉菜单.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/new/面板.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/new/面板.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/new/面板_如果左边图标可以直接用白色时候就只用这个.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/new/面板_如果左边图标可以直接用白色时候就只用这个.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/pagination_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/pagination_icons.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/panel_tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/panel_tools.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/searchbox_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/searchbox_button.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/slider_handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/slider_handle.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/spinner_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/spinner_arrows.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/tabs_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/tabs_icons.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/tree_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/tree_icons.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/images/validatebox_warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/easyuitemplate/images/validatebox_warning.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/layout.css: -------------------------------------------------------------------------------- 1 | .layout{position:relative;overflow:hidden;margin:0;padding:0;z-index:0}.layout-panel{position:absolute;overflow:hidden}.layout-panel-east,.layout-panel-west{z-index:2}.layout-panel-north,.layout-panel-south{z-index:3}.layout-expand{position:absolute;padding:0px;font-size:1px;cursor:pointer;z-index:1}.layout-expand .panel-header,.layout-expand .panel-body{background:transparent;filter:none;overflow:hidden}.layout-expand .panel-header{border-bottom-width:0px}.layout-split-proxy-h,.layout-split-proxy-v{position:absolute;font-size:1px;display:none;z-index:5}.layout-split-proxy-h{width:5px;cursor:e-resize}.layout-split-proxy-v{height:5px;cursor:n-resize}.layout-mask{position:absolute;background:#fafafa;filter:alpha(opacity=10);opacity:0.10;z-index:4}.layout-button-up{background:url("images/layout_arrows.png") no-repeat -16px -16px}.layout-button-down{background:url("images/layout_arrows.png") no-repeat -16px 0}.layout-button-left{background:url("images/layout_arrows.png") no-repeat 0 0}.layout-button-right{background:url("images/layout_arrows.png") no-repeat 0 -16px}.layout-split-proxy-h,.layout-split-proxy-v{background-color:#859416}.layout-split-north{border-bottom:5px solid #fafafa}.layout-split-south{border-top:5px solid #fafafa}.layout-split-east{border-left:5px solid #fafafa}.layout-split-west{border-right:5px solid #fafafa}.layout-expand{background-color:#f1f1f1}.layout-expand-over{background-color:#e5f0c9} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/messager.css: -------------------------------------------------------------------------------- 1 | .messager-body{padding:10px;overflow:hidden}.messager-button{text-align:center;padding-top:10px}.messager-icon{float:left;width:50px;height:50px;margin:0 10px 10px 0}.messager-error{background:url("images/messager_icons.png") no-repeat scroll -100px 0}.messager-info{background:url("images/messager_icons.png") no-repeat scroll 0 0}.messager-question{background:url("images/messager_icons.png") no-repeat scroll -50px 0}.messager-warning{background:url("images/messager_icons.png") no-repeat scroll -150px 0}.messager-progress{padding:10px}.messager-p-msg{margin-bottom:5px}.messager-body .messager-input{width:100%;padding:1px 0;border:1px solid #f6c1bc} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/progressbar.css: -------------------------------------------------------------------------------- 1 | .progressbar{border-width:1px;border-style:solid;-moz-border-radius:0px 0px 0px 0px;-webkit-border-radius:0px 0px 0px 0px;border-radius:0px 0px 0px 0px;overflow:hidden;position:relative}.progressbar-text{text-align:center;position:absolute}.progressbar-value{position:relative;overflow:hidden;width:0;-moz-border-radius:0px 0 0 0px;-webkit-border-radius:0px 0 0 0px;border-radius:0px 0 0 0px}.progressbar{border-color:#bfbfbf}.progressbar-text{color:#000;font-size:12px}.progressbar-value .progressbar-text{background-color:#1da028;color:#000} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/searchbox.css: -------------------------------------------------------------------------------- 1 | .searchbox-button{width:18px;height:20px;overflow:hidden;display:inline-block;vertical-align:top;cursor:pointer;opacity:0.6;filter:alpha(opacity=60)}.searchbox-button-hover{opacity:1.0;filter:alpha(opacity=100)}.searchbox .l-btn-plain{border:0;padding:0;vertical-align:top;opacity:0.6;filter:alpha(opacity=60);-moz-border-radius:0 0 0 0;-webkit-border-radius:0 0 0 0;border-radius:0 0 0 0}.searchbox .l-btn-plain:hover{border:0;padding:0;opacity:1.0;filter:alpha(opacity=100);-moz-border-radius:0 0 0 0;-webkit-border-radius:0 0 0 0;border-radius:0 0 0 0}.searchbox a.m-btn-plain-active{-moz-border-radius:0 0 0 0;-webkit-border-radius:0 0 0 0;border-radius:0 0 0 0}.searchbox .m-btn-active{border-width:0 1px 0 0;-moz-border-radius:0 0 0 0;-webkit-border-radius:0 0 0 0;border-radius:0 0 0 0}.searchbox .textbox-button-right{border-width:0 0 0 1px}.searchbox .textbox-button-left{border-width:0 1px 0 0}.searchbox-button{background:url("images/searchbox_button.png") no-repeat center center}.searchbox .l-btn-plain{background:#f3f3f3}.searchbox .l-btn-plain-disabled,.searchbox .l-btn-plain-disabled:hover{opacity:0.5;filter:alpha(opacity=50)} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/slider.css: -------------------------------------------------------------------------------- 1 | .slider-disabled{opacity:0.5;filter:alpha(opacity=50)}.slider-h{height:22px}.slider-v{width:22px}.slider-inner{position:relative;height:3px;top:7px;border-width:1px;border-style:solid;border-radius:0px}.slider-handle{position:absolute;display:block;outline:none;width:20px;height:20px;top:-7px;margin-left:-10px}.slider-tip{position:absolute;display:inline-block;line-height:12px;font-size:12px;white-space:nowrap;top:-22px;color:#000}.slider-rule{position:relative;top:15px}.slider-rule span{position:absolute;display:inline-block;font-size:0;height:5px;border-width:0 0 0 1px;border-style:solid}.slider-rulelabel{position:relative;top:20px}.slider-rulelabel span{position:absolute;display:inline-block;font-size:12px}.slider-v .slider-inner{width:6px;left:7px;top:0;float:left}.slider-v .slider-handle{left:3px;margin-top:-10px}.slider-v .slider-tip{left:-10px;margin-top:-6px}.slider-v .slider-rule{float:left;top:0;left:16px}.slider-v .slider-rule span{width:5px;height:'auto';border-left:0;border-width:1px 0 0 0;border-style:solid}.slider-v .slider-rulelabel{float:left;top:0;left:23px}.slider-handle{background:url("images/slider_handle.png") no-repeat}.slider-inner{border-color:#bfbfbf;background:#f1f1f1}.slider-rule span{border-color:#999999}.slider-rulelabel span{color:#000} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/spinner.css: -------------------------------------------------------------------------------- 1 | .spinner-arrow{background-color:#f1f1f1;display:inline-block;overflow:hidden;vertical-align:top;margin:0;padding:0;opacity:1.0;filter:alpha(opacity=100);width:18px}.spinner-arrow-up,.spinner-arrow-down{opacity:0.6;filter:alpha(opacity=60);display:block;font-size:1px;width:18px;height:10px;width:100%;height:50%;color:#fff;outline-style:none}.spinner-arrow-hover{background-color:#777;opacity:1.0;filter:alpha(opacity=100)}.spinner-arrow-up:hover,.spinner-arrow-down:hover{opacity:1.0;filter:alpha(opacity=100);background-color:#adadad}.textbox-icon-disabled .spinner-arrow-up:hover,.textbox-icon-disabled .spinner-arrow-down:hover{opacity:0.6;filter:alpha(opacity=60);background-color:#3d3d3d;cursor:default}.spinner .textbox-icon-disabled{opacity:0.6;filter:alpha(opacity=60)}.spinner-arrow-up{background:url('images/new/spinner_arrows.png?1465220546') no-repeat 0 0}.spinner-arrow-up:hover{background-position:-18px 0}.spinner-arrow-down{background:url('images/new/spinner_arrows.png?1465220546') no-repeat 0 -15px}.spinner-arrow-down:hover{background-position:-18px -15px} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/switchbutton.css: -------------------------------------------------------------------------------- 1 | .switchbutton{text-decoration:none;display:inline-block;overflow:hidden;vertical-align:middle;margin:0;padding:0;cursor:pointer;background:#bbb;border:1px solid #bbb;-moz-border-radius:5px 5px 5px 5px;-webkit-border-radius:5px 5px 5px 5px;border-radius:5px 5px 5px 5px}.switchbutton-inner{display:inline-block;overflow:hidden;position:relative;top:-1px;left:-1px}.switchbutton-on,.switchbutton-off,.switchbutton-handle{display:inline-block;text-align:center;height:100%;float:left;font-size:12px;-moz-border-radius:5px 5px 5px 5px;-webkit-border-radius:5px 5px 5px 5px;border-radius:5px 5px 5px 5px}.switchbutton-on{background:#1da02b;color:#fff}.switchbutton-off{background-color:#ffffff;color:#000000}.switchbutton-on,.switchbutton-reversed .switchbutton-off{-moz-border-radius:5px 0 0 5px;-webkit-border-radius:5px 0 0 5px;border-radius:5px 0 0 5px}.switchbutton-off,.switchbutton-reversed .switchbutton-on{-moz-border-radius:0 5px 5px 0;-webkit-border-radius:0 5px 5px 0;border-radius:0 5px 5px 0}.switchbutton-handle{position:absolute;top:0;left:50%;background-color:#ffffff;color:#000000;border:1px solid #bbb;-moz-box-shadow:0 0 3px 0 #bbb;-webkit-box-shadow:0 0 3px 0 #bbb;box-shadow:0 0 3px 0 #bbb}.switchbutton-value{position:absolute;top:0;left:-5000px}.switchbutton-disabled{opacity:0.5;filter:alpha(opacity=50)}.switchbutton-disabled,.switchbutton-readonly{cursor:default} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/easyuitemplate/window.css: -------------------------------------------------------------------------------- 1 | .window{overflow:hidden;border-width:1px;border-style:solid}.window .window-header{background:#e3e3e3;padding:0px 0px 6px 0px;height:33px;line-height:33px}.window .window-body{border-width:1px;border-style:solid;border-top-width:0px}.window .window-body-noheader{border-top-width:1px}.window .window-header .panel-icon,.window .window-header .panel-tool{top:50%;margin-top:-9px}.window .window-header .panel-icon{left:10px}.window .window-header .panel-tool{right:11px}.window .window-header .panel-with-icon{padding-left:35px;height:38px;line-height:38px}.window-proxy{position:absolute;overflow:hidden}.window-proxy-mask{position:absolute;filter:alpha(opacity=5);opacity:0.05}.window-mask{position:absolute;left:0;top:0;width:100%;height:100%;filter:alpha(opacity=40);opacity:0.40;font-size:1px;*zoom:1;overflow:hidden}.window,.window-shadow{position:absolute;-moz-border-radius:0px 0px 0px 0px;-webkit-border-radius:0px 0px 0px 0px;border-radius:0px 0px 0px 0px}.window-shadow{background:#fafafa;-moz-box-shadow:2px 2px 3px #fafafa;-webkit-box-shadow:2px 2px 3px #fafafa;box-shadow:2px 2px 3px #fafafa;filter:progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2)}.window,.window .window-body{border-color:#bfbfbf}.window{background-color:#f0e3bf}.window-proxy{border:1px dashed #bfbfbf}.window-proxy-mask,.window-mask{background:#eee} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/fonts/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/fonts/iconfont.eot -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/fonts/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/fonts/iconfont.ttf -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/fonts/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/fonts/iconfont.woff -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/iconfont/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/iconfont/iconfont.eot -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/iconfont/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/iconfont/iconfont.ttf -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/iconfont/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/iconfont/iconfont.woff -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/images/login/appPhone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/images/login/appPhone.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/images/login/display_eyeon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/images/login/display_eyeon.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/images/login/display_eyeout.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/images/login/display_eyeout.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/images/login/left-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/images/login/left-login.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/images/login/psd-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/images/login/psd-login.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/images/login/user-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/images/login/user-login.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/images/main/left_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/images/main/left_list.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/images/main/main_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/images/main/main_logo.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/images/main/navbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/images/main/navbg.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/images/main/sider-toggle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/images/main/sider-toggle.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/images/main/tabs_close_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/images/main/tabs_close_hover.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/images/main/tabs_close_pf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/images/main/tabs_close_pf.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/images/main/tabs_close_pf0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/images/main/tabs_close_pf0.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/images/main/top_bottombg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/images/main/top_bottombg.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/images/main/top_userbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/images/main/top_userbg.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/images/main/topbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/images/main/topbg.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/images/main/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/images/main/user.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/images/main/xg_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/images/main/xg_left.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/images/main/xg_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/images/main/xg_right.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/js/custom.common.js: -------------------------------------------------------------------------------- 1 | ;(function () { 2 | $.extend({ 3 | initHeight: function () { 4 | $(window).resize(function () { 5 | var h = $(window).height()-$('.top-header').outerHeight(); 6 | $('.top-body').height(h) 7 | }).resize(); 8 | } 9 | }) 10 | $.fn.extend({ 11 | setFile: function (callback) { 12 | return this.each(function (index, item){ 13 | $(item).wrap('
          ').hide(); 14 | var $thisText = $(''); 15 | var $thisBtn = $(''+item.title+''); 16 | $(item).after($thisBtn).after($thisText); 17 | $thisBtn.on('click', function () { 18 | $(item).trigger('click'); 19 | }); 20 | $(item).on('change', function () { 21 | var value = this.value.substr(this.value.lastIndexOf('\\')+1); 22 | $thisText.val(value); 23 | callback && callback() 24 | }) 25 | }) 26 | } 27 | }) 28 | })() -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/accordion.css: -------------------------------------------------------------------------------- 1 | .accordion{overflow:hidden;border-width:1px;border-style:solid}.accordion .accordion-header{border-width:0 0 1px;cursor:pointer}.accordion .accordion-body{border-width:0 0 1px}.accordion-noborder{border-width:0}.accordion-noborder .accordion-header{border-width:0 0 1px}.accordion-noborder .accordion-body{border-width:0 0 1px}.accordion-collapse{background:url("images/accordion_arrows.png") no-repeat 0 0}.accordion-expand{background:url("images/accordion_arrows.png") no-repeat -16px 0}.accordion{background:#ffffff;border-color:#bfbfbf}.accordion .accordion-header{background:#e3e3e3;filter:none}.accordion .accordion-header-selected{background:#fef0b6}.accordion .accordion-header-selected .panel-title{color:#000000} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/combobox.css: -------------------------------------------------------------------------------- 1 | .combobox-item,.combobox-group,.combobox-stick{font-size:12px;padding:3px}.combobox-item-disabled{opacity:0.5;filter:alpha(opacity=50)}.combobox-gitem{padding-left:10px}.combobox-group,.combobox-stick{font-weight:bold}.combobox-stick{position:absolute;top:1px;left:1px;right:1px;background:inherit}.combobox-item-hover{background-color:#e8e8e8;color:#000000}.combobox-item-selected{background-color:#1da02b;color:#fff}.combobox-icon{display:inline-block;width:16px;height:16px;vertical-align:middle;margin-right:2px} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/css/base.css: -------------------------------------------------------------------------------- 1 | html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}html{line-height:1}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}caption,th,td{text-align:left;font-weight:normal;vertical-align:middle}q,blockquote{quotes:none}q:before,q:after,blockquote:before,blockquote:after{content:"";content:none}a img{border:none}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}html{*overflow:auto}body,button,input,select,textarea{font-family:PingFang SC, Lantinghei SC, Microsoft Yahei, Hiragino Sans GB, Microsoft Sans Serif, WenQuanYi Micro Hei, sans;font-size:14px}.clearfix:after{content:"";display:block;height:0;clear:both;visibility:hidden}.clearfix{display:inline-block}.clearfix{height:1%}.clearfix{display:block;overflow:hidden}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/datalist.css: -------------------------------------------------------------------------------- 1 | .datalist .datagrid-header{border-width:0}.datalist .datagrid-group,.m-list .m-list-group{height:25px;line-height:25px;font-weight:bold;overflow:hidden;background-color:#fafafa;border-style:solid;border-width:0 0 1px 0;border-color:#ebebeb}.datalist .datagrid-group-expander{display:none}.datalist .datagrid-group-title{padding:0 4px}.datalist .datagrid-btable{width:100%;table-layout:fixed}.datalist .datagrid-row td{border-style:solid;border-left-color:transparent;border-right-color:transparent;border-bottom-width:0}.datalist-lines .datagrid-row td{border-bottom-width:1px}.datalist .datagrid-cell,.m-list li{width:auto;height:auto;padding:2px 4px;line-height:18px;position:relative;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.datalist-link,.m-list li>a{display:block;position:relative;cursor:pointer;color:#404040;text-decoration:none;overflow:hidden;margin:-2px -4px;padding:2px 4px;padding-right:16px;line-height:18px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.datalist-link::after,.m-list li>a::after{position:absolute;display:block;width:8px;height:8px;content:'';right:6px;top:50%;margin-top:-4px;border-style:solid;border-width:1px 1px 0 0;-ms-transform:rotate(45deg);-moz-transform:rotate(45deg);-webkit-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.m-list{margin:0;padding:0;list-style:none}.m-list li{border-style:solid;border-width:0 0 1px 0;border-color:#ebebeb}.m-list li>a:hover{background:#eee;color:#404040}.m-list .m-list-group{padding:0 4px} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/datebox.css: -------------------------------------------------------------------------------- 1 | .datebox-calendar-inner{height:180px}.datebox-button{padding:0 5px;text-align:center}.datebox-button a{line-height:22px;font-size:12px;font-weight:bold;text-decoration:none;opacity:0.6;filter:alpha(opacity=60)}.datebox-button a:hover{opacity:1.0;filter:alpha(opacity=100)}.datebox-current,.datebox-close{float:left}.datebox-close{float:right}.datebox .combo-arrow{position:relative;right:8px;width:16px !important;background-image:url('images/new/datebox_arrow.png?1464356513');background-position:0 center;background-repeat:no-repeat}.datebox.textbox-focused .combo-arrow{background-position:-16px center}.datebox-button{background-color:#fafafa}.datebox-button a{color:#444} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/dialog.css: -------------------------------------------------------------------------------- 1 | .dialog-content{overflow:auto}.dialog-toolbar{position:relative;padding:2px 5px}.dialog-tool-separator{float:left;height:24px;border-left:1px solid #ccc;border-right:1px solid #fff;margin:2px 1px}.dialog-button{position:relative;top:-1px;padding:5px;text-align:right}.dialog-button .l-btn{margin-left:5px}.dialog-toolbar,.dialog-button{background:#F4F4F4;border-width:1px;border-style:solid}.dialog-toolbar{border-color:#F4F4F4}.dialog-button{border-color:#F4F4F4}.window-thinborder .dialog-toolbar{border-left:transparent;border-right:transparent;border-top-color:#F4F4F4}.window-thinborder .dialog-button{top:0px;padding:5px 8px 8px 8px;border-left:transparent;border-right:transparent;border-bottom:transparent}.panel.window{padding:0}.window.dialog .window-header,.panel.dialog .window-header{height:38px;line-height:38px;color:#fff;padding:0;background:#1da028}.window.dialog .panel-title,.panel.dialog .panel-title{height:38px;line-height:38px;color:#fff;font-size:13px}.window.dialog,.window.dialog .window-body,.panel.dialog,.panel.dialog .window-body{border:1px solid #bfbfbf}.window.dialog .window-header,.panel.dialog .window-header{padding-left:5px}.dialog.window .window-header .panel-icon{left:6px;margin-top:-8px}.dialog .panel-icon,.dialog .panel-tool{position:absolute;top:50%;margin-top:-8px;height:20px;overflow:hidden}.dialog .panel-tool-close{width:20px !important;height:20px !important;background:url('images/new/dialog_close.png?1464355571') no-repeat 0 0px}.dialog .panel-tool-close:hover{background-color:#1da028 !important;background:url('images/new/dialog_close.png?1464355571') no-repeat -20px 0px} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/filebox.css: -------------------------------------------------------------------------------- 1 | .filebox .textbox-value{vertical-align:top;position:absolute;top:0;left:-5000px}.filebox-label{display:inline-block;position:absolute;width:100%;height:100%;cursor:pointer;left:0;top:0;z-index:10;background:url("images/blank.gif") no-repeat}.l-btn-disabled .filebox-label{cursor:default} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/fonticon.css: -------------------------------------------------------------------------------- 1 | @font-face{font-family:'iconfont';src:url('fonts/iconfont.eot');src:url('fonts/iconfont.eot?#iefix') format("embedded-opentype"),url('fonts/iconfont.woff') format("woff"),url('fonts/iconfont.ttf') format("truetype"),url('fonts/iconfont.svg#iconfont') format("svg")}.iconfont{font-family:"iconfont" !important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:0.2px;-moz-osx-font-smoothing:grayscale} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/back.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/blank.gif -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/cancel.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/clear.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/cut.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/edit_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/edit_add.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/edit_remove.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/edit_remove.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/filesave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/filesave.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/filter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/filter.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/help.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/large_chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/large_chart.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/large_clipart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/large_clipart.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/large_picture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/large_picture.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/large_shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/large_shapes.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/large_smartart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/large_smartart.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/list.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/lock.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/man.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/man.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/mini_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/mini_add.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/mini_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/mini_edit.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/mini_refresh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/mini_refresh.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/more.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/no.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/no.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/ok.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/pencil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/pencil.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/print.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/print.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/redo.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/reload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/reload.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/search.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/sum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/sum.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/tip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/tip.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/icons/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/icons/undo.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/accordion_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/accordion_arrows.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/blank.gif -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/calendar_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/calendar_arrows.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/combo_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/combo_arrow.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/datagrid_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/datagrid_icons.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/datebox_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/datebox_arrow.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/layout_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/layout_arrows.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/linkbutton_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/linkbutton_bg.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/loading.gif -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/menu_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/menu_arrows.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/messager_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/messager_icons.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/new/datebox_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/new/datebox_arrow.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/new/dialog_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/new/dialog_close.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/new/grid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/new/grid.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/new/pagination_icons_disabeld.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/new/pagination_icons_disabeld.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/new/pagination_icons_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/new/pagination_icons_hover.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/new/panel_tools_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/new/panel_tools_hover.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/new/spinner_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/new/spinner_arrows.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/new/tab_dropdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/new/tab_dropdown.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/new/tab_dropdown_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/new/tab_dropdown_hover.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/new/tabs_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/new/tabs_close.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/new/tabs_close_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/new/tabs_close_hover.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/new/下拉菜单.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/new/下拉菜单.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/new/面板.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/new/面板.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/new/面板_如果左边图标可以直接用白色时候就只用这个.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/new/面板_如果左边图标可以直接用白色时候就只用这个.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/pagination_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/pagination_icons.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/panel_tools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/panel_tools.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/searchbox_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/searchbox_button.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/slider_handle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/slider_handle.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/spinner_arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/spinner_arrows.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/tabs_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/tabs_icons.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/tree_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/tree_icons.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/images/validatebox_warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/images/validatebox_warning.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/imgs/login/login_box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/imgs/login/login_box.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/imgs/login/login_box_w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/imgs/login/login_box_w.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/imgs/login/login_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/imgs/login/login_logo.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/imgs/login/login_logo_w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/imgs/login/login_logo_w.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/imgs/login/login_top_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/imgs/login/login_top_left.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/imgs/login/login_top_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/imgs/login/login_top_right.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/imgs/login/loginbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/public/uimaker/imgs/login/loginbg.png -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/layout.css: -------------------------------------------------------------------------------- 1 | .layout{position:relative;overflow:hidden;margin:0;padding:0;z-index:0}.layout-panel{position:absolute;overflow:hidden}.layout-panel-east,.layout-panel-west{z-index:2}.layout-panel-north,.layout-panel-south{z-index:3}.layout-expand{position:absolute;padding:0px;font-size:1px;cursor:pointer;z-index:1}.layout-expand .panel-header,.layout-expand .panel-body{background:transparent;filter:none;overflow:hidden}.layout-expand .panel-header{border-bottom-width:0px}.layout-split-proxy-h,.layout-split-proxy-v{position:absolute;font-size:1px;display:none;z-index:5}.layout-split-proxy-h{width:5px;cursor:e-resize}.layout-split-proxy-v{height:5px;cursor:n-resize}.layout-mask{position:absolute;background:#fafafa;filter:alpha(opacity=10);opacity:0.10;z-index:4}.layout-button-up{background:url("images/layout_arrows.png") no-repeat -16px -16px}.layout-button-down{background:url("images/layout_arrows.png") no-repeat -16px 0}.layout-button-left{background:url("images/layout_arrows.png") no-repeat 0 0}.layout-button-right{background:url("images/layout_arrows.png") no-repeat 0 -16px}.layout-split-proxy-h,.layout-split-proxy-v{background-color:#859416}.layout-split-north{border-bottom:5px solid #fafafa}.layout-split-south{border-top:5px solid #fafafa}.layout-split-east{border-left:5px solid #fafafa}.layout-split-west{border-right:5px solid #fafafa}.layout-expand{background-color:#f1f1f1}.layout-expand-over{background-color:#e5f0c9} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/messager.css: -------------------------------------------------------------------------------- 1 | .messager-body{padding:10px;overflow:hidden}.messager-button{text-align:center;padding-top:10px}.messager-icon{float:left;width:50px;height:50px;margin:0 10px 10px 0}.messager-error{background:url("images/messager_icons.png") no-repeat scroll -100px 0}.messager-info{background:url("images/messager_icons.png") no-repeat scroll 0 0}.messager-question{background:url("images/messager_icons.png") no-repeat scroll -50px 0}.messager-warning{background:url("images/messager_icons.png") no-repeat scroll -150px 0}.messager-progress{padding:10px}.messager-p-msg{margin-bottom:5px}.messager-body .messager-input{width:100%;padding:1px 0;border:1px solid #f6c1bc} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/progressbar.css: -------------------------------------------------------------------------------- 1 | .progressbar{border-width:1px;border-style:solid;-moz-border-radius:0px 0px 0px 0px;-webkit-border-radius:0px 0px 0px 0px;border-radius:0px 0px 0px 0px;overflow:hidden;position:relative}.progressbar-text{text-align:center;position:absolute}.progressbar-value{position:relative;overflow:hidden;width:0;-moz-border-radius:0px 0 0 0px;-webkit-border-radius:0px 0 0 0px;border-radius:0px 0 0 0px}.progressbar{border-color:#bfbfbf}.progressbar-text{color:#000;font-size:12px}.progressbar-value .progressbar-text{background-color:#1da028;color:#000} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/searchbox.css: -------------------------------------------------------------------------------- 1 | .searchbox-button{width:18px;height:20px;overflow:hidden;display:inline-block;vertical-align:top;cursor:pointer;opacity:0.6;filter:alpha(opacity=60)}.searchbox-button-hover{opacity:1.0;filter:alpha(opacity=100)}.searchbox .l-btn-plain{border:0;padding:0;vertical-align:top;opacity:0.6;filter:alpha(opacity=60);-moz-border-radius:0 0 0 0;-webkit-border-radius:0 0 0 0;border-radius:0 0 0 0}.searchbox .l-btn-plain:hover{border:0;padding:0;opacity:1.0;filter:alpha(opacity=100);-moz-border-radius:0 0 0 0;-webkit-border-radius:0 0 0 0;border-radius:0 0 0 0}.searchbox a.m-btn-plain-active{-moz-border-radius:0 0 0 0;-webkit-border-radius:0 0 0 0;border-radius:0 0 0 0}.searchbox .m-btn-active{border-width:0 1px 0 0;-moz-border-radius:0 0 0 0;-webkit-border-radius:0 0 0 0;border-radius:0 0 0 0}.searchbox .textbox-button-right{border-width:0 0 0 1px}.searchbox .textbox-button-left{border-width:0 1px 0 0}.searchbox-button{background:url("images/searchbox_button.png") no-repeat center center}.searchbox .l-btn-plain{background:#f3f3f3}.searchbox .l-btn-plain-disabled,.searchbox .l-btn-plain-disabled:hover{opacity:0.5;filter:alpha(opacity=50)} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/slider.css: -------------------------------------------------------------------------------- 1 | .slider-disabled{opacity:0.5;filter:alpha(opacity=50)}.slider-h{height:22px}.slider-v{width:22px}.slider-inner{position:relative;height:3px;top:7px;border-width:1px;border-style:solid;border-radius:0px}.slider-handle{position:absolute;display:block;outline:none;width:20px;height:20px;top:-7px;margin-left:-10px}.slider-tip{position:absolute;display:inline-block;line-height:12px;font-size:12px;white-space:nowrap;top:-22px;color:#000}.slider-rule{position:relative;top:15px}.slider-rule span{position:absolute;display:inline-block;font-size:0;height:5px;border-width:0 0 0 1px;border-style:solid}.slider-rulelabel{position:relative;top:20px}.slider-rulelabel span{position:absolute;display:inline-block;font-size:12px}.slider-v .slider-inner{width:6px;left:7px;top:0;float:left}.slider-v .slider-handle{left:3px;margin-top:-10px}.slider-v .slider-tip{left:-10px;margin-top:-6px}.slider-v .slider-rule{float:left;top:0;left:16px}.slider-v .slider-rule span{width:5px;height:'auto';border-left:0;border-width:1px 0 0 0;border-style:solid}.slider-v .slider-rulelabel{float:left;top:0;left:23px}.slider-handle{background:url("images/slider_handle.png") no-repeat}.slider-inner{border-color:#bfbfbf;background:#f1f1f1}.slider-rule span{border-color:#999999}.slider-rulelabel span{color:#000} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/spinner.css: -------------------------------------------------------------------------------- 1 | .spinner-arrow{background-color:#f1f1f1;display:inline-block;overflow:hidden;vertical-align:top;margin:0;padding:0;opacity:1.0;filter:alpha(opacity=100);width:18px}.spinner-arrow-up,.spinner-arrow-down{opacity:0.6;filter:alpha(opacity=60);display:block;font-size:1px;width:18px;height:10px;width:100%;height:50%;color:#fff;outline-style:none}.spinner-arrow-hover{background-color:#777;opacity:1.0;filter:alpha(opacity=100)}.spinner-arrow-up:hover,.spinner-arrow-down:hover{opacity:1.0;filter:alpha(opacity=100);background-color:#adadad}.textbox-icon-disabled .spinner-arrow-up:hover,.textbox-icon-disabled .spinner-arrow-down:hover{opacity:0.6;filter:alpha(opacity=60);background-color:#3d3d3d;cursor:default}.spinner .textbox-icon-disabled{opacity:0.6;filter:alpha(opacity=60)}.spinner-arrow-up{background:url('images/new/spinner_arrows.png?1465220546') no-repeat 0 0}.spinner-arrow-up:hover{background-position:-18px 0}.spinner-arrow-down{background:url('images/new/spinner_arrows.png?1465220546') no-repeat 0 -15px}.spinner-arrow-down:hover{background-position:-18px -15px} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/switchbutton.css: -------------------------------------------------------------------------------- 1 | .switchbutton{text-decoration:none;display:inline-block;overflow:hidden;vertical-align:middle;margin:0;padding:0;cursor:pointer;background:#bbb;border:1px solid #bbb;-moz-border-radius:5px 5px 5px 5px;-webkit-border-radius:5px 5px 5px 5px;border-radius:5px 5px 5px 5px}.switchbutton-inner{display:inline-block;overflow:hidden;position:relative;top:-1px;left:-1px}.switchbutton-on,.switchbutton-off,.switchbutton-handle{display:inline-block;text-align:center;height:100%;float:left;font-size:12px;-moz-border-radius:5px 5px 5px 5px;-webkit-border-radius:5px 5px 5px 5px;border-radius:5px 5px 5px 5px}.switchbutton-on{background:#1da02b;color:#fff}.switchbutton-off{background-color:#ffffff;color:#000000}.switchbutton-on,.switchbutton-reversed .switchbutton-off{-moz-border-radius:5px 0 0 5px;-webkit-border-radius:5px 0 0 5px;border-radius:5px 0 0 5px}.switchbutton-off,.switchbutton-reversed .switchbutton-on{-moz-border-radius:0 5px 5px 0;-webkit-border-radius:0 5px 5px 0;border-radius:0 5px 5px 0}.switchbutton-handle{position:absolute;top:0;left:50%;background-color:#ffffff;color:#000000;border:1px solid #bbb;-moz-box-shadow:0 0 3px 0 #bbb;-webkit-box-shadow:0 0 3px 0 #bbb;box-shadow:0 0 3px 0 #bbb}.switchbutton-value{position:absolute;top:0;left:-5000px}.switchbutton-disabled{opacity:0.5;filter:alpha(opacity=50)}.switchbutton-disabled,.switchbutton-readonly{cursor:default} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/tooltip.css: -------------------------------------------------------------------------------- 1 | .tooltip{position:absolute;display:none;z-index:9900000;outline:none;opacity:1;filter:alpha(opacity=100);padding:10px;border-width:1px;border-style:solid;border-radius:5px;-moz-border-radius:0px 0px 0px 0px;-webkit-border-radius:0px 0px 0px 0px;border-radius:0px 0px 0px 0px;border-color:#cbcbcb;border-bottom-left-radius:3px;border-bottom-right-radius:3px;box-shadow:0 2px 0 0 #e3e3e3}.tooltip-content{font-size:12px}.tooltip-arrow-outer,.tooltip-arrow{position:absolute;width:0;height:0;line-height:0;font-size:0;border-style:solid;border-width:6px;border-color:transparent;_border-color:tomato;_filter:chroma(color=tomato)}.tooltip-right .tooltip-arrow-outer{left:0;top:50%;margin:-6px 0 0 -13px}.tooltip-right .tooltip-arrow{left:0;top:50%;margin:-6px 0 0 -12px}.tooltip-left .tooltip-arrow-outer{right:0;top:50%;margin:-6px -13px 0 0}.tooltip-left .tooltip-arrow{right:0;top:50%;margin:-6px -12px 0 0}.tooltip-top .tooltip-arrow-outer{bottom:0;left:50%;margin:0 0 -13px -6px}.tooltip-top .tooltip-arrow{bottom:0;left:50%;margin:0 0 -12px -6px}.tooltip-bottom .tooltip-arrow-outer{top:0;left:50%;margin:-13px 0 0 -6px}.tooltip-bottom .tooltip-arrow{top:0;left:50%;margin:-12px 0 0 -6px}.tooltip{background-color:#fff;border-color:#cbcbcb;color:#000}.tooltip-right .tooltip-arrow-outer{border-right-color:#fff}.tooltip-right .tooltip-arrow{border-right-color:#fff}.tooltip-left .tooltip-arrow-outer{border-left-color:#fff}.tooltip-left .tooltip-arrow{border-left-color:#fff}.tooltip-top .tooltip-arrow-outer{border-top-color:#fff}.tooltip-top .tooltip-arrow{border-top-color:#fff}.tooltip-bottom .tooltip-arrow-outer{border-bottom-color:#fff}.tooltip-bottom .tooltip-arrow{border-bottom-color:#fff} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/public/uimaker/window.css: -------------------------------------------------------------------------------- 1 | .window{overflow:hidden;border-width:1px;border-style:solid}.window .window-header{background:#e3e3e3;padding:0px 0px 6px 0px;height:33px;line-height:33px}.window .window-body{border-width:1px;border-style:solid;border-top-width:0px}.window .window-body-noheader{border-top-width:1px}.window .window-header .panel-icon,.window .window-header .panel-tool{top:50%;margin-top:-9px}.window .window-header .panel-icon{left:10px}.window .window-header .panel-tool{right:11px}.window .window-header .panel-with-icon{padding-left:35px;height:38px;line-height:38px}.window-proxy{position:absolute;overflow:hidden}.window-proxy-mask{position:absolute;filter:alpha(opacity=5);opacity:0.05}.window-mask{position:absolute;left:0;top:0;width:100%;height:100%;filter:alpha(opacity=40);opacity:0.40;font-size:1px;*zoom:1;overflow:hidden}.window,.window-shadow{position:absolute;-moz-border-radius:0px 0px 0px 0px;-webkit-border-radius:0px 0px 0px 0px;border-radius:0px 0px 0px 0px}.window-shadow{background:#fafafa;-moz-box-shadow:2px 2px 3px #fafafa;-webkit-box-shadow:2px 2px 3px #fafafa;box-shadow:2px 2px 3px #fafafa;filter:progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2)}.window,.window .window-body{border-color:#bfbfbf}.window{background-color:#f0e3bf}.window-proxy{border:1px dashed #bfbfbf}.window-proxy-mask,.window-mask{background:#eee} 2 | -------------------------------------------------------------------------------- /sso-server/src/main/webapp/static/sso/main/main.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yzgod/tw-sso/24682fa33b2ca1ec3f0b938e2fbe2e76950ca2b0/sso-server/src/main/webapp/static/sso/main/main.css -------------------------------------------------------------------------------- /sso-server/src/test/java/base/BaseTest.java: -------------------------------------------------------------------------------- 1 | package base; 2 | 3 | import org.junit.runner.RunWith; 4 | import org.springframework.boot.test.context.SpringBootTest; 5 | import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 6 | 7 | import com.tongwei.sso.StartApp; 8 | 9 | /** 10 | * @author yangz 11 | * @date 2017年9月12日 上午10:19:45 12 | * @description 13 | */ 14 | @RunWith(SpringJUnit4ClassRunner.class) 15 | @SpringBootTest(classes=StartApp.class) 16 | public class BaseTest {} 17 | 18 | -------------------------------------------------------------------------------- /sso-services/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4.0.0 3 | 4 | com.tongwei 5 | tw-sso 6 | 0.1 7 | 8 | pom 9 | sso-services 10 | 11 | service-aliyun 12 | 13 | -------------------------------------------------------------------------------- /sso-services/service-aliyun/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4.0.0 3 | 4 | com.tongwei 5 | sso-services 6 | 0.1 7 | 8 | service-aliyun 9 | jar 10 | 11 | 12 | org.springframework.session 13 | spring-session-data-redis 14 | 15 | 16 | 17 | org.slf4j 18 | slf4j-api 19 | 20 | 21 | com.alibaba 22 | fastjson 23 | 24 | 25 | commons-lang 26 | commons-lang 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /sso-services/service-aliyun/src/main/java/com/tongwei/aliyun/AliyunCommonConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.aliyun; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | /** 7 | * @author yangz 8 | * @date 2018年2月28日 下午4:31:48 9 | * @description 阿里云服务配置 10 | */ 11 | @Configuration 12 | public class AliyunCommonConfiguration { 13 | 14 | @Bean 15 | public AliyunSmsUtil aliyunSmsUtil() { 16 | return new AliyunSmsUtil(); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /sso-services/service-aliyun/src/main/java/com/tongwei/aliyun/AliyunConst.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.aliyun; 2 | 3 | /** 4 | * @author yangz 5 | * @date 2018年3月1日 上午8:42:24 6 | * @description 阿里云服务相关 7 | */ 8 | public class AliyunConst { 9 | 10 | // 阿里云短信list 11 | public static final String QUEUE_ALIYUN_SMS_KEY = "queue:aliyun:sms"; 12 | } 13 | -------------------------------------------------------------------------------- /sso-services/service-aliyun/src/main/java/com/tongwei/aliyun/AliyunSmsUtil.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.aliyun; 2 | 3 | import org.apache.commons.lang.StringUtils; 4 | import org.springframework.beans.BeansException; 5 | import org.springframework.beans.factory.BeanFactory; 6 | import org.springframework.beans.factory.BeanFactoryAware; 7 | import org.springframework.data.redis.core.BoundListOperations; 8 | import org.springframework.data.redis.core.StringRedisTemplate; 9 | 10 | import com.alibaba.fastjson.JSON; 11 | 12 | /** 13 | * @author yangz 14 | * @date 2018年2月28日 下午5:16:23 15 | * @description 阿里云短信发送工具类 16 | */ 17 | public class AliyunSmsUtil implements BeanFactoryAware{ 18 | 19 | private static StringRedisTemplate redis; 20 | 21 | private static BoundListOperations lo; 22 | 23 | public static void send(AliyunSms aliyunSms){ 24 | if(StringUtils.isBlank(aliyunSms.getPhones())){ 25 | throw new IllegalArgumentException("电话号码不能为空!多个电话号码以,分割!"); 26 | } 27 | if(StringUtils.isBlank(aliyunSms.getSignName())){ 28 | throw new IllegalArgumentException("签名不能为空!"); 29 | } 30 | if(StringUtils.isBlank(aliyunSms.getCode())){ 31 | throw new IllegalArgumentException("短信模版编号不能为空!"); 32 | } 33 | lo.leftPush(JSON.toJSONString(aliyunSms)); 34 | } 35 | 36 | @Override 37 | public void setBeanFactory(BeanFactory beanFactory) throws BeansException { 38 | redis = beanFactory.getBean(StringRedisTemplate.class); 39 | lo = redis.boundListOps(AliyunConst.QUEUE_ALIYUN_SMS_KEY); 40 | } 41 | 42 | 43 | } 44 | -------------------------------------------------------------------------------- /sso-services/service-aliyun/src/main/java/com/tongwei/aliyun/EnableAliyun.java: -------------------------------------------------------------------------------- 1 | package com.tongwei.aliyun; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.Target; 6 | 7 | import org.springframework.context.annotation.Configuration; 8 | import org.springframework.context.annotation.Import; 9 | 10 | /** 11 | * @author yangz 12 | * @date 2018年1月16日 下午3:50:30 13 | * @description 启用阿里云服务配置 14 | */ 15 | @Retention(java.lang.annotation.RetentionPolicy.RUNTIME) 16 | @Target({ java.lang.annotation.ElementType.TYPE }) 17 | @Documented 18 | @Import({ AliyunCommonConfiguration.class }) 19 | @Configuration 20 | public @interface EnableAliyun { 21 | 22 | } 23 | --------------------------------------------------------------------------------