├── .maven-dockerignore ├── src ├── main │ ├── resources │ │ ├── static │ │ │ ├── js │ │ │ │ ├── admin.js │ │ │ │ ├── admin-sch-Identity-manage.js │ │ │ │ └── main.js │ │ │ ├── images │ │ │ │ ├── home.png │ │ │ │ ├── logo.png │ │ │ │ ├── org.png │ │ │ │ ├── tree.png │ │ │ │ ├── BTCert.png │ │ │ │ ├── admin.jpg │ │ │ │ ├── issuer.png │ │ │ │ ├── login.png │ │ │ │ ├── logo2.png │ │ │ │ ├── school.jpg │ │ │ │ ├── checker.png │ │ │ │ ├── database.png │ │ │ │ ├── favicon.ico │ │ │ │ ├── functions.png │ │ │ │ ├── login-bg.jpg │ │ │ │ ├── logo-lab.png │ │ │ │ ├── metaphor.png │ │ │ │ ├── multiSig.png │ │ │ │ ├── network.png │ │ │ │ ├── serialize.png │ │ │ │ ├── student.jpg │ │ │ │ ├── student.png │ │ │ │ ├── workflow.png │ │ │ │ ├── background.jpg │ │ │ │ ├── BTCert-white.png │ │ │ │ ├── architecture.png │ │ │ │ └── workflowPrototype.png │ │ │ ├── admin │ │ │ │ ├── fonts │ │ │ │ │ ├── FontAwesome.otf │ │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ │ ├── fontawesome-webfont.woff2 │ │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ │ ├── css │ │ │ │ │ ├── patterns │ │ │ │ │ │ ├── shattered.png │ │ │ │ │ │ ├── header-profile.png │ │ │ │ │ │ ├── header-profile-skin-1.png │ │ │ │ │ │ └── header-profile-skin-3.png │ │ │ │ │ ├── plugins │ │ │ │ │ │ ├── iCheck │ │ │ │ │ │ │ ├── green.png │ │ │ │ │ │ │ ├── green@2x.png │ │ │ │ │ │ │ └── custom.css │ │ │ │ │ │ ├── jsTree │ │ │ │ │ │ │ ├── 32px.png │ │ │ │ │ │ │ └── throbber.gif │ │ │ │ │ │ ├── images │ │ │ │ │ │ │ ├── sort_asc.png │ │ │ │ │ │ │ ├── sort_desc.png │ │ │ │ │ │ │ ├── spritemap.png │ │ │ │ │ │ │ ├── spritemap@2x.png │ │ │ │ │ │ │ └── sprite-skin-flat.png │ │ │ │ │ │ ├── blueimp │ │ │ │ │ │ │ ├── img │ │ │ │ │ │ │ │ ├── error.png │ │ │ │ │ │ │ │ ├── loading.gif │ │ │ │ │ │ │ │ ├── play-pause.png │ │ │ │ │ │ │ │ ├── video-play.png │ │ │ │ │ │ │ │ ├── video-play.svg │ │ │ │ │ │ │ │ ├── error.svg │ │ │ │ │ │ │ │ └── play-pause.svg │ │ │ │ │ │ │ └── css │ │ │ │ │ │ │ │ ├── demo.css │ │ │ │ │ │ │ │ └── blueimp-gallery-indicator.css │ │ │ │ │ │ ├── chosen │ │ │ │ │ │ │ ├── chosen-sprite.png │ │ │ │ │ │ │ └── chosen-sprite@2x.png │ │ │ │ │ │ ├── footable │ │ │ │ │ │ │ └── fonts │ │ │ │ │ │ │ │ ├── footable.eot │ │ │ │ │ │ │ │ ├── footable.ttf │ │ │ │ │ │ │ │ └── footable.woff │ │ │ │ │ │ ├── jQueryUI │ │ │ │ │ │ │ └── images │ │ │ │ │ │ │ │ ├── ui-icons_222222_256x240.png │ │ │ │ │ │ │ │ ├── ui-icons_454545_256x240.png │ │ │ │ │ │ │ │ ├── ui-icons_888888_256x240.png │ │ │ │ │ │ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ │ │ │ │ │ │ └── ui-bg_flat_75_ffffff_40x100.png │ │ │ │ │ │ ├── colorpicker │ │ │ │ │ │ │ └── img │ │ │ │ │ │ │ │ └── bootstrap-colorpicker │ │ │ │ │ │ │ │ ├── alpha.png │ │ │ │ │ │ │ │ ├── hue.png │ │ │ │ │ │ │ │ ├── saturation.png │ │ │ │ │ │ │ │ ├── hue-horizontal.png │ │ │ │ │ │ │ │ └── alpha-horizontal.png │ │ │ │ │ │ ├── morris │ │ │ │ │ │ │ └── morris-0.4.3.min.css │ │ │ │ │ │ ├── webuploader │ │ │ │ │ │ │ └── webuploader.css │ │ │ │ │ │ ├── switchery │ │ │ │ │ │ │ └── switchery.css │ │ │ │ │ │ ├── fullcalendar │ │ │ │ │ │ │ └── fullcalendar.print.css │ │ │ │ │ │ ├── multiselect │ │ │ │ │ │ │ └── bootstrap-multiselect.css │ │ │ │ │ │ ├── treeview │ │ │ │ │ │ │ └── bootstrap-treeview.css │ │ │ │ │ │ ├── duallistbox │ │ │ │ │ │ │ └── bootstrap-duallistbox.css │ │ │ │ │ │ └── ionRangeSlider │ │ │ │ │ │ │ └── ion.rangeSlider.skinFlat.css │ │ │ │ │ └── login.css │ │ │ │ └── js │ │ │ │ │ ├── plugins │ │ │ │ │ ├── fancybox │ │ │ │ │ │ ├── blank.gif │ │ │ │ │ │ ├── fancybox_sprite.png │ │ │ │ │ │ ├── fancybox_loading.gif │ │ │ │ │ │ ├── fancybox_overlay.png │ │ │ │ │ │ ├── fancybox_loading@2x.gif │ │ │ │ │ │ └── fancybox_sprite@2x.png │ │ │ │ │ ├── layer │ │ │ │ │ │ ├── layim │ │ │ │ │ │ │ ├── loading.gif │ │ │ │ │ │ │ └── data │ │ │ │ │ │ │ │ ├── chatlog.json │ │ │ │ │ │ │ │ ├── groups.json │ │ │ │ │ │ │ │ └── group.json │ │ │ │ │ │ ├── skin │ │ │ │ │ │ │ ├── default │ │ │ │ │ │ │ │ ├── icon.png │ │ │ │ │ │ │ │ ├── textbg.png │ │ │ │ │ │ │ │ ├── icon-ext.png │ │ │ │ │ │ │ │ ├── icon_ext.png │ │ │ │ │ │ │ │ ├── loading-0.gif │ │ │ │ │ │ │ │ ├── loading-1.gif │ │ │ │ │ │ │ │ ├── loading-2.gif │ │ │ │ │ │ │ │ ├── xubox_ico0.png │ │ │ │ │ │ │ │ ├── xubox_title0.png │ │ │ │ │ │ │ │ ├── xubox_loading0.gif │ │ │ │ │ │ │ │ ├── xubox_loading1.gif │ │ │ │ │ │ │ │ ├── xubox_loading2.gif │ │ │ │ │ │ │ │ └── xubox_loading3.gif │ │ │ │ │ │ │ └── moon │ │ │ │ │ │ │ │ └── default.png │ │ │ │ │ │ └── laydate │ │ │ │ │ │ │ └── skins │ │ │ │ │ │ │ └── default │ │ │ │ │ │ │ └── icon.png │ │ │ │ │ ├── webuploader │ │ │ │ │ │ ├── Uploader.swf │ │ │ │ │ │ ├── webuploader.css │ │ │ │ │ │ └── README.md │ │ │ │ │ ├── gritter │ │ │ │ │ │ └── images │ │ │ │ │ │ │ ├── gritter.png │ │ │ │ │ │ │ ├── ie-spacer.gif │ │ │ │ │ │ │ └── gritter-light.png │ │ │ │ │ ├── codemirror │ │ │ │ │ │ └── mode │ │ │ │ │ │ │ ├── tiddlywiki │ │ │ │ │ │ │ └── tiddlywiki.css │ │ │ │ │ │ │ ├── ruby │ │ │ │ │ │ │ └── test.js │ │ │ │ │ │ │ ├── tiki │ │ │ │ │ │ │ ├── tiki.css │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── diff │ │ │ │ │ │ │ └── diff.js │ │ │ │ │ │ │ ├── ntriples │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── spreadsheet │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── http │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── solr │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── z80 │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── ecl │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── rust │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── turtle │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── pascal │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── pig │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── vbscript │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── gherkin │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── properties │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── javascript │ │ │ │ │ │ │ └── typescript.html │ │ │ │ │ │ │ ├── sass │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── perl │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── idl │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── dart │ │ │ │ │ │ │ ├── index.html │ │ │ │ │ │ │ └── dart.js │ │ │ │ │ │ │ ├── xml │ │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── jinja2 │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── css │ │ │ │ │ │ │ ├── less_test.js │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── shell │ │ │ │ │ │ │ ├── test.js │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── sparql │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── tornado │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── django │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── gas │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── toml │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── octave │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── cypher │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── pegjs │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── smalltalk │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── htmlembedded │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── soy │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── php │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── modelica │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── apl │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ ├── haml │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ │ └── lua │ │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── bootstrap-table │ │ │ │ │ │ ├── locale │ │ │ │ │ │ │ ├── bootstrap-table-zh-CN.min.js │ │ │ │ │ │ │ └── bootstrap-table-zh-CN.js │ │ │ │ │ │ └── bootstrap-table-mobile.min.js │ │ │ │ │ ├── markdown │ │ │ │ │ │ └── bootstrap-markdown.zh.js │ │ │ │ │ ├── validate │ │ │ │ │ │ └── messages_zh.min.js │ │ │ │ │ ├── suggest │ │ │ │ │ │ └── data.json │ │ │ │ │ └── prettyfile │ │ │ │ │ │ └── bootstrap-prettyfile.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── content.js │ │ │ ├── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ ├── css │ │ │ │ ├── ie10-viewport-bug-workaround.css │ │ │ │ ├── jquery.jsonview.css │ │ │ │ └── dashboard.css │ │ │ └── jslib │ │ │ │ ├── ie10-viewport-bug-workaround.js │ │ │ │ ├── crypto-min.js │ │ │ │ └── ie-emulation-modes-warning.js │ │ ├── application.properties │ │ ├── templates │ │ │ ├── home.html │ │ │ ├── about.html │ │ │ └── error │ │ │ │ └── 404.html │ │ └── config │ │ │ └── application.yml │ └── java │ │ └── org │ │ └── bham │ │ └── btcert │ │ ├── StartApplication.java │ │ ├── model │ │ ├── certificate │ │ │ ├── Verification.java │ │ │ ├── Anchors.java │ │ │ ├── Recipient.java │ │ │ ├── FileClaim.java │ │ │ ├── RevocationClaim.java │ │ │ ├── Issuer.java │ │ │ ├── IdentityClaim.java │ │ │ ├── Signature.java │ │ │ ├── OperateDetail.java │ │ │ ├── CertsInfo.java │ │ │ └── Openbadges.java │ │ ├── identity │ │ │ └── IdentityClaim.java │ │ ├── SchConf.java │ │ ├── Users.java │ │ ├── PageModel.java │ │ └── StuRevoInfo.java │ │ ├── exception │ │ ├── MyResourceNotFoundHandler.java │ │ └── MyAccessDeniedHandler.java │ │ ├── config │ │ ├── CustomPasswordEncoder.java │ │ └── WebMvcConfig.java │ │ ├── filter │ │ └── SimpleCORSFilter.java │ │ ├── utils │ │ ├── merkle │ │ │ └── BytesFormatter.java │ │ └── CryptoUtil.java │ │ └── service │ │ └── CustomUserService.java └── test │ └── java │ └── org │ └── bham │ └── btcert │ └── utils │ └── JsonLdTests.java ├── .gitignore ├── Dockerfile ├── .project ├── LICENSE └── .classpath /.maven-dockerignore: -------------------------------------------------------------------------------- 1 | target/docker/ -------------------------------------------------------------------------------- /src/main/resources/static/js/admin.js: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | #spring.thymeleaf.prefix=file:./templates/ -------------------------------------------------------------------------------- /src/main/resources/templates/home.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/templates/home.html -------------------------------------------------------------------------------- /src/main/resources/static/images/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/home.png -------------------------------------------------------------------------------- /src/main/resources/static/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/logo.png -------------------------------------------------------------------------------- /src/main/resources/static/images/org.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/org.png -------------------------------------------------------------------------------- /src/main/resources/static/images/tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/tree.png -------------------------------------------------------------------------------- /src/main/resources/static/images/BTCert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/BTCert.png -------------------------------------------------------------------------------- /src/main/resources/static/images/admin.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/admin.jpg -------------------------------------------------------------------------------- /src/main/resources/static/images/issuer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/issuer.png -------------------------------------------------------------------------------- /src/main/resources/static/images/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/login.png -------------------------------------------------------------------------------- /src/main/resources/static/images/logo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/logo2.png -------------------------------------------------------------------------------- /src/main/resources/static/images/school.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/school.jpg -------------------------------------------------------------------------------- /src/main/resources/static/images/checker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/checker.png -------------------------------------------------------------------------------- /src/main/resources/static/images/database.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/database.png -------------------------------------------------------------------------------- /src/main/resources/static/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/favicon.ico -------------------------------------------------------------------------------- /src/main/resources/static/images/functions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/functions.png -------------------------------------------------------------------------------- /src/main/resources/static/images/login-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/login-bg.jpg -------------------------------------------------------------------------------- /src/main/resources/static/images/logo-lab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/logo-lab.png -------------------------------------------------------------------------------- /src/main/resources/static/images/metaphor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/metaphor.png -------------------------------------------------------------------------------- /src/main/resources/static/images/multiSig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/multiSig.png -------------------------------------------------------------------------------- /src/main/resources/static/images/network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/network.png -------------------------------------------------------------------------------- /src/main/resources/static/images/serialize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/serialize.png -------------------------------------------------------------------------------- /src/main/resources/static/images/student.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/student.jpg -------------------------------------------------------------------------------- /src/main/resources/static/images/student.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/student.png -------------------------------------------------------------------------------- /src/main/resources/static/images/workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/workflow.png -------------------------------------------------------------------------------- /src/main/resources/static/images/background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/background.jpg -------------------------------------------------------------------------------- /src/main/resources/static/images/BTCert-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/BTCert-white.png -------------------------------------------------------------------------------- /src/main/resources/static/images/architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/architecture.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | app.log 3 | app.log.1 4 | *.log 5 | /.idea 6 | /.settings 7 | src/main/resources/static/js/scss/ 8 | src/main/resources/static/plugins/ 9 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /src/main/resources/static/images/workflowPrototype.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/images/workflowPrototype.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/patterns/shattered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/patterns/shattered.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/iCheck/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/iCheck/green.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/jsTree/32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/jsTree/32px.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /src/main/resources/static/admin/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/fancybox/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/fancybox/blank.gif -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/patterns/header-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/patterns/header-profile.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/iCheck/green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/iCheck/green@2x.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/images/sort_asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/images/sort_asc.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/jsTree/throbber.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/jsTree/throbber.gif -------------------------------------------------------------------------------- /src/main/resources/static/admin/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /src/main/resources/static/admin/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/blueimp/img/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/blueimp/img/error.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/images/sort_desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/images/sort_desc.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/images/spritemap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/images/spritemap.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/layer/layim/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/layer/layim/loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /src/main/resources/static/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /src/main/resources/static/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /src/main/resources/static/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/blueimp/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/blueimp/img/loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/chosen/chosen-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/chosen/chosen-sprite.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/images/spritemap@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/images/spritemap@2x.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/webuploader/Uploader.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/webuploader/Uploader.swf -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/patterns/header-profile-skin-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/patterns/header-profile-skin-1.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/patterns/header-profile-skin-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/patterns/header-profile-skin-3.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/blueimp/img/play-pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/blueimp/img/play-pause.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/blueimp/img/video-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/blueimp/img/video-play.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/chosen/chosen-sprite@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/chosen/chosen-sprite@2x.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/footable/fonts/footable.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/footable/fonts/footable.eot -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/footable/fonts/footable.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/footable/fonts/footable.ttf -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/images/sprite-skin-flat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/images/sprite-skin-flat.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /src/main/resources/static/admin/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /src/main/resources/static/admin/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/fancybox/fancybox_sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/fancybox/fancybox_sprite.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/gritter/images/gritter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/gritter/images/gritter.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/gritter/images/ie-spacer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/gritter/images/ie-spacer.gif -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/layer/skin/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/layer/skin/default/icon.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/layer/skin/moon/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/layer/skin/moon/default.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/footable/fonts/footable.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/footable/fonts/footable.woff -------------------------------------------------------------------------------- /src/main/resources/static/admin/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/fancybox/fancybox_loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/fancybox/fancybox_loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/fancybox/fancybox_overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/fancybox/fancybox_overlay.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/layer/skin/default/textbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/layer/skin/default/textbg.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/fancybox/fancybox_loading@2x.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/fancybox/fancybox_loading@2x.gif -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/fancybox/fancybox_sprite@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/fancybox/fancybox_sprite@2x.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/gritter/images/gritter-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/gritter/images/gritter-light.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/layer/skin/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/layer/skin/default/icon-ext.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/layer/skin/default/icon_ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/layer/skin/default/icon_ext.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/layer/skin/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/layer/skin/default/loading-0.gif -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/layer/skin/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/layer/skin/default/loading-1.gif -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/layer/skin/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/layer/skin/default/loading-2.gif -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/layer/skin/default/xubox_ico0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/layer/skin/default/xubox_ico0.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/layer/skin/default/xubox_title0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/layer/skin/default/xubox_title0.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/layer/laydate/skins/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/layer/laydate/skins/default/icon.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/layer/skin/default/xubox_loading0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/layer/skin/default/xubox_loading0.gif -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/layer/skin/default/xubox_loading1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/layer/skin/default/xubox_loading1.gif -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/layer/skin/default/xubox_loading2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/layer/skin/default/xubox_loading2.gif -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/layer/skin/default/xubox_loading3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/js/plugins/layer/skin/default/xubox_loading3.gif -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/jQueryUI/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/jQueryUI/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/jQueryUI/images/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/jQueryUI/images/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/jQueryUI/images/ui-icons_888888_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/jQueryUI/images/ui-icons_888888_256x240.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/colorpicker/img/bootstrap-colorpicker/alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/colorpicker/img/bootstrap-colorpicker/alpha.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/colorpicker/img/bootstrap-colorpicker/hue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/colorpicker/img/bootstrap-colorpicker/hue.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/jQueryUI/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/jQueryUI/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/jQueryUI/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/jQueryUI/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/colorpicker/img/bootstrap-colorpicker/saturation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/colorpicker/img/bootstrap-colorpicker/saturation.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/colorpicker/img/bootstrap-colorpicker/hue-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/colorpicker/img/bootstrap-colorpicker/hue-horizontal.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BlockTechCert/BTCert/HEAD/src/main/resources/static/admin/css/plugins/colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/index.js: -------------------------------------------------------------------------------- 1 | $(function(){ 2 | //菜单点击 3 | J_iframe 4 | $(".J_menuItem").on('click',function(){ 5 | var url = $(this).attr('href'); 6 | $("#J_iframe").attr('src',url); 7 | return false; 8 | }); 9 | }); -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM java:8 2 | VOLUME /tmp 3 | ADD target/Boot-0.0.1-SNAPSHOT.jar app.jar 4 | EXPOSE 8080 5 | RUN bash -c 'touch /app.jar' 6 | #ENTRYPOINT ["java","-Dspring.data.mongodb.uri=mongodb://mongo/test", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] 7 | 8 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/blueimp/img/video-play.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/tiddlywiki/tiddlywiki.css: -------------------------------------------------------------------------------- 1 | span.cm-underlined { 2 | text-decoration: underline; 3 | } 4 | span.cm-strikethrough { 5 | text-decoration: line-through; 6 | } 7 | span.cm-brace { 8 | color: #170; 9 | font-weight: bold; 10 | } 11 | span.cm-table { 12 | color: blue; 13 | font-weight: bold; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/blueimp/img/error.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/blueimp/img/play-pause.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/main/resources/static/js/admin-sch-Identity-manage.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author rxl635@student.bahm.ac.uk 3 | * Copyright 2017,Rujia. 4 | * Licensed under MIT (https://github.com/BlockTechCert/BTCert/blob/master/LICENSE) 5 | */ 6 | $.getJSON("/issuer/getAllSchIdentity/",function(result){ 7 | $("#schIdentity").JSONView(result, { collapsed: false }); 8 | /*$('#schIdentity').JSONView('expand', 3);*/ 9 | }) 10 | 11 | function toggleJson(){ 12 | $('#schIdentity').JSONView('toggle', 1); 13 | } -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/morris/morris-0.4.3.min.css: -------------------------------------------------------------------------------- 1 | .morris-hover{position:absolute;z-index:1000;}.morris-hover.morris-default-style{border-radius:10px;padding:6px;color:#666;background:rgba(255, 255, 255, 0.8);border:solid 2px rgba(230, 230, 230, 0.8);font-family:sans-serif;font-size:12px;text-align:center;}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:bold;margin:0.25em 0;} 2 | .morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:0.1em 0;} 3 | -------------------------------------------------------------------------------- /src/main/resources/templates/about.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 |
9 | 10 |
11 | 12 |
13 |

Normal page (No need login)

14 |
15 | 16 |
17 | 18 | 19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /src/main/resources/static/css/ie10-viewport-bug-workaround.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * IE10 viewport hack for Surface/desktop Windows 8 bug 3 | * Copyright 2014-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | 7 | /* 8 | * See the Getting Started docs for more information: 9 | * http://getbootstrap.com/getting-started/#support-ie10-width 10 | */ 11 | @-ms-viewport { width: device-width; } 12 | @-o-viewport { width: device-width; } 13 | @viewport { width: device-width; } -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/ruby/test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | var mode = CodeMirror.getMode({indentUnit: 2}, "ruby"); 6 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } 7 | 8 | MT("divide_equal_operator", 9 | "[variable bar] [operator /=] [variable foo]"); 10 | 11 | MT("divide_equal_operator_no_spacing", 12 | "[variable foo][operator /=][number 42]"); 13 | 14 | })(); 15 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/StartApplication.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | /** 7 | * 8 | * @Title: StartApplication.java 9 | * @Package org.bham.btcert 10 | * @Description: StartApplication 11 | * @author rxl635@student.bham.ac.uk 12 | * @version V1.0 13 | */ 14 | 15 | @SpringBootApplication 16 | public class StartApplication { 17 | public static void main(String[] args) throws Exception { 18 | SpringApplication.run(StartApplication.class, args); 19 | } 20 | } -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/tiki/tiki.css: -------------------------------------------------------------------------------- 1 | .cm-tw-syntaxerror { 2 | color: #FFF; 3 | background-color: #900; 4 | } 5 | 6 | .cm-tw-deleted { 7 | text-decoration: line-through; 8 | } 9 | 10 | .cm-tw-header5 { 11 | font-weight: bold; 12 | } 13 | .cm-tw-listitem:first-child { /*Added first child to fix duplicate padding when highlighting*/ 14 | padding-left: 10px; 15 | } 16 | 17 | .cm-tw-box { 18 | border-top-width: 0px ! important; 19 | border-style: solid; 20 | border-width: 1px; 21 | border-color: inherit; 22 | } 23 | 24 | .cm-tw-underline { 25 | text-decoration: underline; 26 | } 27 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | Boot 4 | 5 | 6 | 7 | 8 | 9 | org.eclipse.jdt.core.javabuilder 10 | 11 | 12 | 13 | 14 | org.eclipse.m2e.core.maven2Builder 15 | 16 | 17 | 18 | 19 | 20 | org.eclipse.jdt.core.javanature 21 | org.eclipse.m2e.core.maven2Nature 22 | org.jkiss.dbeaver.DBeaverNature 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/webuploader/webuploader.css: -------------------------------------------------------------------------------- 1 | .webuploader-container { 2 | position: relative; 3 | } 4 | .webuploader-element-invisible { 5 | position: absolute !important; 6 | clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ 7 | clip: rect(1px,1px,1px,1px); 8 | } 9 | .webuploader-pick { 10 | position: relative; 11 | display: inline-block; 12 | cursor: pointer; 13 | background: #00b7ee; 14 | padding: 10px 15px; 15 | color: #fff; 16 | text-align: center; 17 | border-radius: 3px; 18 | overflow: hidden; 19 | } 20 | .webuploader-pick-hover { 21 | background: #00a2d4; 22 | } 23 | 24 | .webuploader-pick-disable { 25 | opacity: 0.6; 26 | pointer-events:none; 27 | } 28 | 29 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/webuploader/webuploader.css: -------------------------------------------------------------------------------- 1 | .webuploader-container { 2 | position: relative; 3 | } 4 | .webuploader-element-invisible { 5 | position: absolute !important; 6 | clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ 7 | clip: rect(1px,1px,1px,1px); 8 | } 9 | .webuploader-pick { 10 | position: relative; 11 | display: inline-block; 12 | cursor: pointer; 13 | background: #00b7ee; 14 | padding: 10px 15px; 15 | color: #fff; 16 | text-align: center; 17 | border-radius: 3px; 18 | overflow: hidden; 19 | } 20 | .webuploader-pick-hover { 21 | background: #00a2d4; 22 | } 23 | 24 | .webuploader-pick-disable { 25 | opacity: 0.6; 26 | pointer-events:none; 27 | } 28 | 29 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/model/certificate/Verification.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.model.certificate; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 7 | * @Title: Verification.java 8 | * @Package org.bham.btcert.model.certificate 9 | * @Description: TODO 10 | * @author rxl635@student.bham.ac.uk 11 | * @version V1.0 12 | */ 13 | public class Verification { 14 | 15 | private List type; //"identityClaim","Extension" 16 | 17 | public List getType() { 18 | return type; 19 | } 20 | 21 | public void setType(List type) { 22 | this.type = type; 23 | } 24 | 25 | @Override 26 | public String toString() { 27 | return "Verification [type=" + type + "]"; 28 | } 29 | 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/exception/MyResourceNotFoundHandler.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.exception; 2 | 3 | import org.springframework.http.HttpStatus; 4 | import org.springframework.web.bind.annotation.ResponseStatus; 5 | 6 | /** 7 | * 8 | * @Title: MyResourceNotFoundHandler.java 9 | * @Package org.bham.btcert.exception 10 | * @Description: TODO handle 404 11 | * @author rxl635@student.bham.ac.uk 12 | * @version V1.0 13 | */ 14 | @ResponseStatus(HttpStatus.NOT_FOUND) 15 | public class MyResourceNotFoundHandler extends RuntimeException{ 16 | 17 | private static final long serialVersionUID = 1L; 18 | 19 | @ResponseStatus(HttpStatus.NOT_FOUND) 20 | public String handleResourceNotFoundException() { 21 | return "/404"; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/resources/static/jslib/ie10-viewport-bug-workaround.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * IE10 viewport hack for Surface/desktop Windows 8 bug 3 | * Copyright 2014-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | 7 | // See the Getting Started docs for more information: 8 | // http://getbootstrap.com/getting-started/#support-ie10-width 9 | 10 | (function () { 11 | 'use strict'; 12 | 13 | if (navigator.userAgent.match(/IEMobile\/10\.0/)) { 14 | var msViewportStyle = document.createElement('style') 15 | msViewportStyle.appendChild( 16 | document.createTextNode( 17 | '@-ms-viewport{width:auto!important}' 18 | ) 19 | ) 20 | document.querySelector('head').appendChild(msViewportStyle) 21 | } 22 | 23 | })(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/switchery/switchery.css: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Main stylesheet for Switchery. 4 | * http://abpetkov.github.io/switchery/ 5 | * 6 | */ 7 | 8 | .switchery { 9 | background-color: #fff; 10 | border: 1px solid #dfdfdf; 11 | border-radius: 20px; 12 | cursor: pointer; 13 | display: inline-block; 14 | height: 30px; 15 | position: relative; 16 | vertical-align: middle; 17 | width: 50px; 18 | 19 | -webkit-box-sizing: content-box; 20 | -moz-box-sizing: content-box; 21 | box-sizing: content-box; 22 | } 23 | 24 | .switchery > small { 25 | background: #fff; 26 | border-radius: 100%; 27 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); 28 | height: 30px; 29 | position: absolute; 30 | top: 0; 31 | width: 30px; 32 | } 33 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/layer/layim/data/chatlog.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": 1, 3 | "msg": "ok", 4 | "data": [ 5 | { 6 | "id": "100001", 7 | "name": "Beaut-zihan", 8 | "time": "10:23", 9 | "face": "img/a1.jpg" 10 | }, 11 | { 12 | "id": "100002", 13 | "name": "慕容晓晓", 14 | "time": "昨天", 15 | "face": "img/a2.jpg" 16 | }, 17 | { 18 | "id": "1000033", 19 | "name": "乔峰", 20 | "time": "2014-4.22", 21 | "face": "img/a3.jpg" 22 | }, 23 | { 24 | "id": "10000333", 25 | "name": "高圆圆", 26 | "time": "2014-4.21", 27 | "face": "img/a4.jpg" 28 | } 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * bootstrap-table - v1.9.0 - 2015-09-30 3 | * https://github.com/wenzhixin/bootstrap-table 4 | * Copyright (c) 2015 zhixin wen 5 | * Licensed MIT License 6 | */ 7 | !function(a){"use strict";a.fn.bootstrapTable.locales["zh-CN"]={formatLoadingMessage:function(){return"正在努力地加载数据中,请稍候……"},formatRecordsPerPage:function(a){return"每页显示 "+a+" 条记录"},formatShowingRows:function(a,b,c){return"显示第 "+a+" 到第 "+b+" 条记录,总共 "+c+" 条记录"},formatSearch:function(){return"搜索"},formatNoMatches:function(){return"没有找到匹配的记录"},formatPaginationSwitch:function(){return"隐藏/显示分页"},formatRefresh:function(){return"刷新"},formatToggle:function(){return"切换"},formatColumns:function(){return"列"}},a.extend(a.fn.bootstrapTable.defaults,a.fn.bootstrapTable.locales["zh-CN"])}(jQuery); 8 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/model/certificate/Anchors.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.model.certificate; 2 | 3 | /** 4 | * 5 | * @Title: Anchors.java 6 | * @Package org.bham.btcert.model.certificate 7 | * @Description: TODO 8 | * @author rxl635@student.bham.ac.uk 9 | * @version V1.0 10 | */ 11 | public class Anchors { 12 | 13 | private String type; 14 | private String sourceId; 15 | 16 | public String getType() { 17 | return type; 18 | } 19 | 20 | public void setType(String type) { 21 | this.type = type; 22 | } 23 | 24 | public String getSourceId() { 25 | return sourceId; 26 | } 27 | 28 | public void setSourceId(String sourceId) { 29 | this.sourceId = sourceId; 30 | } 31 | 32 | @Override 33 | public String toString() { 34 | return "Anchors [type=" + type + ", sourceId=" + sourceId + "]"; 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/fullcalendar/fullcalendar.print.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * FullCalendar v1.6.4 Print Stylesheet 3 | * Docs & License: http://arshaw.com/fullcalendar/ 4 | * (c) 2013 Adam Shaw 5 | */ 6 | 7 | /* 8 | * Include this stylesheet on your page to get a more printer-friendly calendar. 9 | * When including this stylesheet, use the media='print' attribute of the tag. 10 | * Make sure to include this stylesheet IN ADDITION to the regular fullcalendar.css. 11 | */ 12 | 13 | 14 | /* Events 15 | -----------------------------------------------------*/ 16 | 17 | .fc-event { 18 | background: #fff !important; 19 | color: #000 !important; 20 | } 21 | 22 | /* for vertical events */ 23 | 24 | .fc-event-bg { 25 | display: none !important; 26 | } 27 | 28 | .fc-event .ui-resizable-handle { 29 | display: none !important; 30 | } 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/webuploader/README.md: -------------------------------------------------------------------------------- 1 | 目录说明 2 | ======================== 3 | 4 | ```bash 5 | ├── Uploader.swf # SWF文件,当使用Flash运行时需要引入。 6 | ├ 7 | ├── webuploader.js # 完全版本。 8 | ├── webuploader.min.js # min版本 9 | ├ 10 | ├── webuploader.flashonly.js # 只有Flash实现的版本。 11 | ├── webuploader.flashonly.min.js # min版本 12 | ├ 13 | ├── webuploader.html5only.js # 只有Html5实现的版本。 14 | ├── webuploader.html5only.min.js # min版本 15 | ├ 16 | ├── webuploader.noimage.js # 去除图片处理的版本,包括HTML5和FLASH. 17 | ├── webuploader.noimage.min.js # min版本 18 | ├ 19 | ├── webuploader.custom.js # 自定义打包方案,请查看 Gruntfile.js,满足移动端使用。 20 | └── webuploader.custom.min.js # min版本 21 | ``` 22 | 23 | ## 示例 24 | 25 | 请把整个 Git 包下载下来放在 php 服务器下,因为默认提供的文件接受是用 php 编写的,打开 examples 页面便能查看示例效果。 -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/config/CustomPasswordEncoder.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.config; 2 | 3 | import org.springframework.security.crypto.bcrypt.BCrypt; 4 | import org.springframework.security.crypto.password.PasswordEncoder; 5 | 6 | /** 7 | * @author gkatzioura 8 | * @edit rxl635@bham.ac.uk 9 | */ 10 | public class CustomPasswordEncoder implements PasswordEncoder { 11 | 12 | @Override 13 | public String encode(CharSequence rawPassword) { 14 | String hashed = BCrypt.hashpw(rawPassword.toString(), BCrypt.gensalt(12)); 15 | return hashed; 16 | } 17 | 18 | @Override 19 | public boolean matches(CharSequence rawPassword, String encodedPassword) { 20 | return BCrypt.checkpw(rawPassword.toString(), encodedPassword); 21 | } 22 | 23 | public static void main(String[] args) { 24 | System.out.println(new CustomPasswordEncoder().encode("admin")); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/markdown/bootstrap-markdown.zh.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Chinese translation for bootstrap-markdown 3 | * benhaile 4 | */ 5 | (function ($) { 6 | $.fn.markdown.messages.zh = { 7 | 'Bold': "粗体", 8 | 'Italic': "斜体", 9 | 'Heading': "标题", 10 | 'URL/Link': "链接", 11 | 'Image': "图片", 12 | 'List': "列表", 13 | 'Unordered List': "无序列表", 14 | 'Ordered List': "有序列表", 15 | 'Code': "代码", 16 | 'Quote': "引用", 17 | 'Preview': "预览", 18 | 'strong text': "粗体", 19 | 'emphasized text': "强调", 20 | 'heading text': "标题", 21 | 'enter link description here': "输入链接说明", 22 | 'Insert Hyperlink': "URL地址", 23 | 'enter image description here': "输入图片说明", 24 | 'Insert Image Hyperlink': "图片URL地址", 25 | 'enter image title here': "在这里输入图片标题", 26 | 'list text here': "这里是列表文本", 27 | 'code text here': "这里输入代码", 28 | 'quote here': "这里输入引用文本" 29 | 30 | 31 | }; 32 | }(jQuery)); 33 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/model/certificate/Recipient.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.model.certificate; 2 | 3 | /** 4 | * 5 | * @Title: Recipient.java 6 | * @Package org.bham.btcert.model.certificate 7 | * @Description: TODO 8 | * @author rxl635@student.bham.ac.uk 9 | * @version V1.0 10 | */ 11 | public class Recipient { 12 | 13 | private String hashed; 14 | private String identity; 15 | private String type; 16 | public String getHashed() { 17 | return hashed; 18 | } 19 | public void setHashed(String hashed) { 20 | this.hashed = hashed; 21 | } 22 | public String getIdentity() { 23 | return identity; 24 | } 25 | public void setIdentity(String identity) { 26 | this.identity = identity; 27 | } 28 | public String getType() { 29 | return type; 30 | } 31 | public void setType(String type) { 32 | this.type = type; 33 | } 34 | @Override 35 | public String toString() { 36 | return "Recipient [hashed=" + hashed + ", identity=" + identity + ", type=" + type + "]"; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/model/identity/IdentityClaim.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.model.identity; 2 | 3 | /** 4 | * 5 | * @Title: IdentityClaim.java 6 | * @Package org.bham.btcert.model.identity 7 | * @Description: TODO 8 | * @author rxl635@student.bham.ac.uk 9 | * @version V1.0 10 | */ 11 | public class IdentityClaim { 12 | 13 | private String public_key; 14 | private String signature; 15 | private String check_value; 16 | 17 | public String getPublic_key() { 18 | return public_key; 19 | } 20 | public void setPublic_key(String public_key) { 21 | this.public_key = public_key; 22 | } 23 | public String getSignature() { 24 | return signature; 25 | } 26 | public void setSignature(String signature) { 27 | this.signature = signature; 28 | } 29 | public String getCheck_value() { 30 | return check_value; 31 | } 32 | public void setCheck_value(String check_value) { 33 | this.check_value = check_value; 34 | } 35 | @Override 36 | public String toString() { 37 | return "IdentityClaim [public_key=" + public_key + ", signature=" + signature + ", check_value=" + check_value 38 | + "]"; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 BTCert LAB 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/blueimp/css/demo.css: -------------------------------------------------------------------------------- 1 | /* 2 | * blueimp Gallery Demo CSS 2.0.0 3 | * https://github.com/blueimp/Gallery 4 | * 5 | * Copyright 2013, Sebastian Tschan 6 | * https://blueimp.net 7 | * 8 | * Licensed under the MIT license: 9 | * http://www.opensource.org/licenses/MIT 10 | */ 11 | 12 | body { 13 | max-width: 750px; 14 | margin: 0 auto; 15 | padding: 1em; 16 | font-family: 'Lucida Grande', 'Lucida Sans Unicode', Arial, sans-serif; 17 | font-size: 1em; 18 | line-height: 1.4em; 19 | background: #222; 20 | color: #fff; 21 | -webkit-text-size-adjust: 100%; 22 | -ms-text-size-adjust: 100%; 23 | } 24 | a { 25 | color: orange; 26 | text-decoration: none; 27 | } 28 | img { 29 | border: 0; 30 | vertical-align: middle; 31 | } 32 | h1 { 33 | line-height: 1em; 34 | } 35 | h2, 36 | .links { 37 | text-align: center; 38 | } 39 | 40 | @media (min-width: 481px) { 41 | .navigation { 42 | list-style: none; 43 | padding: 0; 44 | } 45 | .navigation li { 46 | display: inline-block; 47 | } 48 | .navigation li:not(:first-child):before { 49 | content: '| '; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/multiselect/bootstrap-multiselect.css: -------------------------------------------------------------------------------- 1 | .multiselect-container{position:absolute;list-style-type:none;margin:0;padding:0}.multiselect-container .input-group{margin:5px}.multiselect-container>li{padding:0}.multiselect-container>li>a.multiselect-all label{font-weight:700}.multiselect-container>li.multiselect-group label{margin:0;padding:3px 20px 3px 20px;height:100%;font-weight:700}.multiselect-container>li.multiselect-group-clickable label{cursor:pointer}.multiselect-container>li>a{padding:0}.multiselect-container>li>a>label{margin:0;height:100%;cursor:pointer;font-weight:400;padding:3px 20px 3px 40px}.multiselect-container>li>a>label.radio,.multiselect-container>li>a>label.checkbox{margin:0}.multiselect-container>li>a>label>input[type=checkbox]{margin-bottom:5px}.btn-group>.btn-group:nth-child(2)>.multiselect.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.form-inline .multiselect-container label.checkbox,.form-inline .multiselect-container label.radio{padding:3px 20px 3px 40px}.form-inline .multiselect-container li a label.checkbox input[type=checkbox],.form-inline .multiselect-container li a label.radio input[type=radio]{margin-left:-20px;margin-right:0} 2 | -------------------------------------------------------------------------------- /src/test/java/org/bham/btcert/utils/JsonLdTests.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.utils; 2 | 3 | public class JsonLdTests { 4 | 5 | 6 | 7 | /* @Test 8 | public void JsonLdTests() throws IOException, JsonLdError { 9 | 10 | { 11 | // Open a valid json(-ld) input file 12 | InputStream inputStream = new FileInputStream("D://t.json"); 13 | // Read the file into an Object (The type of this object will be a List, Map, String, Boolean, 14 | // Number or null depending on the root object in the file). 15 | Object jsonObject = JsonUtils.fromInputStream(inputStream); 16 | 17 | System.out.println(jsonObject); 18 | // Create a context JSON map containing prefixes and definitions 19 | Map context = new HashMap(); 20 | // Customise context... 21 | // Create an instance of JsonLdOptions with the standard JSON-LD options 22 | JsonLdOptions options = new JsonLdOptions(); 23 | // Customise options... 24 | // Call whichever JSONLD function you want! (e.g. compact) 25 | Object compact = JsonLdProcessor.compact(jsonObject, context, options); 26 | // Print out the result (or don't, it's your call!) 27 | System.out.println(JsonUtils.toPrettyString(compact)); 28 | } 29 | }*/ 30 | 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/model/SchConf.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.model; 2 | 3 | import org.springframework.data.annotation.Id; 4 | import org.springframework.data.mongodb.core.mapping.Document; 5 | 6 | /** 7 | * 8 | * @Title: SchConf.java 9 | * @Package org.bham.btcert.model 10 | * @Description: TODO 11 | * @author rxl635@student.bham.ac.uk 12 | * @version V1.0 13 | */ 14 | @Document(collection = "sch_conf") 15 | public class SchConf { 16 | 17 | @Id 18 | private String id; 19 | 20 | private String name; 21 | private String email; 22 | private String url; 23 | private String image; 24 | public String getId() { 25 | return id; 26 | } 27 | public void setId(String id) { 28 | this.id = id; 29 | } 30 | public String getName() { 31 | return name; 32 | } 33 | public void setName(String name) { 34 | this.name = name; 35 | } 36 | public String getEmail() { 37 | return email; 38 | } 39 | public void setEmail(String email) { 40 | this.email = email; 41 | } 42 | public String getUrl() { 43 | return url; 44 | } 45 | public void setUrl(String url) { 46 | this.url = url; 47 | } 48 | public String getImage() { 49 | return image; 50 | } 51 | public void setImage(String image) { 52 | this.image = image; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/treeview/bootstrap-treeview.css: -------------------------------------------------------------------------------- 1 | /* ========================================================= 2 | * bootstrap-treeview.css v1.0.0 3 | * ========================================================= 4 | * Copyright 2013 Jonathan Miles 5 | * Project URL : http://www.jondmiles.com/bootstrap-treeview 6 | * 7 | * Licensed under the Apache License, Version 2.0 (the "License"); 8 | * you may not use this file except in compliance with the License. 9 | * You may obtain a copy of the License at 10 | * 11 | * http://www.apache.org/licenses/LICENSE-2.0 12 | * 13 | * Unless required by applicable law or agreed to in writing, software 14 | * distributed under the License is distributed on an "AS IS" BASIS, 15 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | * See the License for the specific language governing permissions and 17 | * limitations under the License. 18 | * ========================================================= */ 19 | 20 | .list-group-item { 21 | cursor: pointer; 22 | } 23 | 24 | /*.list-group-item:hover { 25 | background-color: #f5f5f5; 26 | }*/ 27 | 28 | span.indent { 29 | margin-left: 10px; 30 | margin-right: 10px; 31 | } 32 | 33 | span.icon { 34 | margin-right: 5px; 35 | } 36 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/validate/messages_zh.min.js: -------------------------------------------------------------------------------- 1 | /*! jQuery Validation Plugin - v1.13.1 - 10/14/2014 2 | * http://jqueryvalidation.org/ 3 | * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ 4 | ! function (a) { 5 | "function" == typeof define && define.amd ? define(["jquery", "jquery.validate.min"], a) : a(jQuery) 6 | }(function (a) { 7 | var icon = " "; 8 | a.extend(a.validator.messages, { 9 | required: icon + "必填", 10 | remote: icon + "请修正此栏位", 11 | email: icon + "请输入有效的电子邮件", 12 | url: icon + "请输入有效的网址", 13 | date: icon + "请输入有效的日期", 14 | dateISO: icon + "请输入有效的日期 (YYYY-MM-DD)", 15 | number: icon + "请输入正确的数字", 16 | digits: icon + "只能输入数字", 17 | creditcard: icon + "请输入有效的信用卡号码", 18 | equalTo: icon + "你的输入不相同", 19 | extension: icon + "请输入有效的后缀", 20 | maxlength: a.validator.format(icon + "最多 {0} 个字"), 21 | minlength: a.validator.format(icon + "最少 {0} 个字"), 22 | rangelength: a.validator.format(icon + "请输入长度为 {0} 至 {1} 之间的字串"), 23 | range: a.validator.format(icon + "请输入 {0} 至 {1} 之间的数值"), 24 | max: a.validator.format(icon + "请输入不大于 {0} 的数值"), 25 | min: a.validator.format(icon + "请输入不小于 {0} 的数值") 26 | }) 27 | }); 28 | -------------------------------------------------------------------------------- /.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/model/certificate/FileClaim.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.model.certificate; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 7 | * @Title: FileClaim.java 8 | * @Package org.bham.btcert.model.certificate 9 | * @Description: TODO 10 | * @author rxl635@student.bham.ac.uk 11 | * @version V1.0 12 | */ 13 | public class FileClaim { 14 | 15 | private String filehash; 16 | private String filestore; 17 | private String filetype; 18 | private List type; //"identityClaim","Extension" 19 | public String getFilehash() { 20 | return filehash; 21 | } 22 | public void setFilehash(String filehash) { 23 | this.filehash = filehash; 24 | } 25 | public String getFilestore() { 26 | return filestore; 27 | } 28 | public void setFilestore(String filestore) { 29 | this.filestore = filestore; 30 | } 31 | public String getFiletype() { 32 | return filetype; 33 | } 34 | public void setFiletype(String filetype) { 35 | this.filetype = filetype; 36 | } 37 | public List getType() { 38 | return type; 39 | } 40 | public void setType(List type) { 41 | this.type = type; 42 | } 43 | @Override 44 | public String toString() { 45 | return "FileClaim [filehash=" + filehash + ", filestore=" + filestore + ", filetype=" + filetype + ", type=" 46 | + type + "]"; 47 | } 48 | 49 | } 50 | 51 | 52 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/model/certificate/RevocationClaim.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.model.certificate; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 7 | * @Title: RevocationClaim.java 8 | * @Package org.bham.btcert.model.certificate 9 | * @Description: TODO 10 | * @author rxl635@student.bham.ac.uk 11 | * @version V1.0 12 | */ 13 | public class RevocationClaim { 14 | 15 | private String revocationAddress; 16 | private String batchRevocationAddress; 17 | private List type; //"identityClaim","Extension" 18 | public String getRevocationAddress() { 19 | return revocationAddress; 20 | } 21 | public void setRevocationAddress(String revocationAddress) { 22 | this.revocationAddress = revocationAddress; 23 | } 24 | public String getBatchRevocationAddress() { 25 | return batchRevocationAddress; 26 | } 27 | public void setBatchRevocationAddress(String batchRevocationAddress) { 28 | this.batchRevocationAddress = batchRevocationAddress; 29 | } 30 | public List getType() { 31 | return type; 32 | } 33 | public void setType(List type) { 34 | this.type = type; 35 | } 36 | @Override 37 | public String toString() { 38 | return "RevocationClaim [revocationAddress=" + revocationAddress + ", batchRevocationAddress=" 39 | + batchRevocationAddress + ", type=" + type + "]"; 40 | } 41 | 42 | } 43 | 44 | 45 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/bootstrap-table/locale/bootstrap-table-zh-CN.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Bootstrap Table Chinese translation 3 | * Author: Zhixin Wen 4 | */ 5 | (function ($) { 6 | 'use strict'; 7 | 8 | $.fn.bootstrapTable.locales['zh-CN'] = { 9 | formatLoadingMessage: function () { 10 | return '正在努力地加载数据中,请稍候……'; 11 | }, 12 | formatRecordsPerPage: function (pageNumber) { 13 | return '每页显示 ' + pageNumber + ' 条记录'; 14 | }, 15 | formatShowingRows: function (pageFrom, pageTo, totalRows) { 16 | return '显示第 ' + pageFrom + ' 到第 ' + pageTo + ' 条记录,总共 ' + totalRows + ' 条记录'; 17 | }, 18 | formatSearch: function () { 19 | return '搜索'; 20 | }, 21 | formatNoMatches: function () { 22 | return '没有找到匹配的记录'; 23 | }, 24 | formatPaginationSwitch: function () { 25 | return '隐藏/显示分页'; 26 | }, 27 | formatRefresh: function () { 28 | return '刷新'; 29 | }, 30 | formatToggle: function () { 31 | return '切换'; 32 | }, 33 | formatColumns: function () { 34 | return '列'; 35 | } 36 | }; 37 | 38 | $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['zh-CN']); 39 | 40 | })(jQuery); 41 | -------------------------------------------------------------------------------- /src/main/resources/config/application.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8080 3 | 4 | #server: 5 | # port: 443 6 | # ssl: 7 | # enabled: true 8 | # key-store: "classpath:pub.jks" 9 | # key-store-password: "******" 10 | 11 | application: 12 | message: I am now here!! 13 | appname: and this is a SpringBoot App ... 14 | logging.file: app.log 15 | #management.port: 8081 16 | #management.addres: 127.0.0.1 17 | #management.context-path: /admin 18 | endpoints.health.enabled: false 19 | security.basic.enabled: true 20 | management.security.enabled: false 21 | spring.aop.proxy-target-class: false 22 | #spring.mvc.static-path-pattern: /resources/** 23 | 24 | spring.data.mongodb.uri: mongodb://multi_sig:multi_sig@cluster0-shard-00-02-pllyi.mongodb.net:27017,cluster0-shard-00-01-pllyi.mongodb.net:27017,cluster0-shard-00-00-pllyi.mongodb.net:27017/bham_db?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin 25 | #spring.data.mongodb.uri: mongodb://appdb:appdb@127.0.0.1:27017/app_db 26 | 27 | 28 | spring: 29 | thymeleaf: 30 | prefix: classpath:/templates/ 31 | suffix: .html 32 | mode: LEGACYHTML5 33 | 34 | --- 35 | spring: 36 | profiles: development 37 | server: 38 | port: 9090 39 | application: 40 | message: I am in DEV ENV 41 | --- 42 | spring: 43 | profiles: production 44 | server: 45 | port: 10010 46 | application: 47 | message: I am in PROD ENV 48 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/diff/diff.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | CodeMirror.defineMode("diff", function() { 15 | 16 | var TOKEN_NAMES = { 17 | '+': 'positive', 18 | '-': 'negative', 19 | '@': 'meta' 20 | }; 21 | 22 | return { 23 | token: function(stream) { 24 | var tw_pos = stream.string.search(/[\t ]+?$/); 25 | 26 | if (!stream.sol() || tw_pos === 0) { 27 | stream.skipToEnd(); 28 | return ("error " + ( 29 | TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, ''); 30 | } 31 | 32 | var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd(); 33 | 34 | if (tw_pos === -1) { 35 | stream.skipToEnd(); 36 | } else { 37 | stream.pos = tw_pos; 38 | } 39 | 40 | return token_name; 41 | } 42 | }; 43 | }); 44 | 45 | CodeMirror.defineMIME("text/x-diff", "diff"); 46 | 47 | }); 48 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/filter/SimpleCORSFilter.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.filter; 2 | 3 | import java.io.IOException; 4 | 5 | import javax.servlet.Filter; 6 | import javax.servlet.FilterChain; 7 | import javax.servlet.FilterConfig; 8 | import javax.servlet.ServletException; 9 | import javax.servlet.ServletRequest; 10 | import javax.servlet.ServletResponse; 11 | import javax.servlet.http.HttpServletResponse; 12 | 13 | import org.springframework.stereotype.Component; 14 | 15 | /** 16 | * 17 | * @Title: SimpleCORSFilter.java 18 | * @Package org.bham.btcert.filter 19 | * @Description: TODO filter for prevent xss 20 | * @author rxl635@student.bham.ac.uk 21 | * @version V1.0 22 | */ 23 | @Component 24 | public class SimpleCORSFilter implements Filter { 25 | 26 | public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { 27 | HttpServletResponse response = (HttpServletResponse) res; 28 | response.setHeader("Access-Control-Allow-Origin", "*"); 29 | response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT"); 30 | response.setHeader("Access-Control-Max-Age", "3600"); 31 | response.setHeader("Access-Control-Allow-Headers", "x-requested-with"); 32 | response.setHeader("X-Frame-Options", "SAMEORIGIN"); 33 | chain.doFilter(req, res); 34 | } 35 | 36 | public void init(FilterConfig filterConfig) {} 37 | 38 | public void destroy() {} 39 | 40 | } -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/model/certificate/Issuer.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.model.certificate; 2 | 3 | /** 4 | * 5 | * @Title: Issuer.java 6 | * @Package org.bham.btcert.model.certificate 7 | * @Description: TODO 8 | * @author rxl635@student.bham.ac.uk 9 | * @version V1.0 10 | */ 11 | public class Issuer { 12 | 13 | private String id; 14 | private String type; 15 | private String name; 16 | private String image; 17 | private String url; 18 | private String email; 19 | public String getId() { 20 | return id; 21 | } 22 | public void setId(String id) { 23 | this.id = id; 24 | } 25 | public String getType() { 26 | return type; 27 | } 28 | public void setType(String type) { 29 | this.type = type; 30 | } 31 | public String getName() { 32 | return name; 33 | } 34 | public void setName(String name) { 35 | this.name = name; 36 | } 37 | public String getImage() { 38 | return image; 39 | } 40 | public void setImage(String image) { 41 | this.image = image; 42 | } 43 | public String getUrl() { 44 | return url; 45 | } 46 | public void setUrl(String url) { 47 | this.url = url; 48 | } 49 | public String getEmail() { 50 | return email; 51 | } 52 | public void setEmail(String email) { 53 | this.email = email; 54 | } 55 | @Override 56 | public String toString() { 57 | return "Issuer [id=" + id + ", type=" + type + ", name=" + name + ", image=" + image + ", url=" + url 58 | + ", email=" + email + "]"; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/model/certificate/IdentityClaim.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.model.certificate; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 7 | * @Title: IdentityClaim.java 8 | * @Package org.bham.btcert.model.certificate 9 | * @Description: TODO 10 | * @author rxl635@student.bham.ac.uk 11 | * @version V1.0 12 | */ 13 | public class IdentityClaim { 14 | 15 | private String identityName; 16 | private String validationtime; 17 | private String BTCaddress; 18 | private List type; //"identityClaim","Extension" 19 | public String getIdentityName() { 20 | return identityName; 21 | } 22 | public void setIdentityName(String identityName) { 23 | this.identityName = identityName; 24 | } 25 | public String getValidationtime() { 26 | return validationtime; 27 | } 28 | public void setValidationtime(String validationtime) { 29 | this.validationtime = validationtime; 30 | } 31 | public String getBTCaddress() { 32 | return BTCaddress; 33 | } 34 | public void setBTCaddress(String bTCaddress) { 35 | BTCaddress = bTCaddress; 36 | } 37 | public List getType() { 38 | return type; 39 | } 40 | public void setType(List type) { 41 | this.type = type; 42 | } 43 | @Override 44 | public String toString() { 45 | return "IdentityClaim [identityName=" + identityName + ", validationtime=" + validationtime + ", BTCaddress=" 46 | + BTCaddress + ", type=" + type + "]"; 47 | } 48 | 49 | 50 | 51 | } 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/model/Users.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.model; 2 | 3 | import org.springframework.data.annotation.Id; 4 | import org.springframework.data.mongodb.core.mapping.Document; 5 | 6 | /** 7 | * 8 | * @Title: Users.java 9 | * @Package org.bham.btcert.model 10 | * @Description: TODO 11 | * @author rxl635@student.bham.ac.uk 12 | * @version V1.0 13 | */ 14 | @Document(collection = "users") 15 | public class Users { 16 | 17 | @Id 18 | private String id; 19 | 20 | private String u_name; 21 | private String u_passwd; 22 | private String role; 23 | private String state; 24 | public String getId() { 25 | return id; 26 | } 27 | public void setId(String id) { 28 | this.id = id; 29 | } 30 | public String getU_name() { 31 | return u_name; 32 | } 33 | public void setU_name(String u_name) { 34 | this.u_name = u_name; 35 | } 36 | public String getU_passwd() { 37 | return u_passwd; 38 | } 39 | public void setU_passwd(String u_passwd) { 40 | this.u_passwd = u_passwd; 41 | } 42 | public String getRole() { 43 | return role; 44 | } 45 | public void setRole(String role) { 46 | this.role = role; 47 | } 48 | public String getState() { 49 | return state; 50 | } 51 | public void setState(String state) { 52 | this.state = state; 53 | } 54 | @Override 55 | public String toString() { 56 | return "Users [id=" + id + ", u_name=" + u_name + ", u_passwd=" + u_passwd + ", role=" + role + ", state=" 57 | + state + "]"; 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /src/main/resources/static/css/jquery.jsonview.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | .jsonview { 3 | /*font-family: monospace; 4 | font-size: 1.1em;*/ 5 | white-space: pre-wrap; } 6 | .jsonview .prop { 7 | font-weight: bold; } 8 | .jsonview .null { 9 | color: red; } 10 | .jsonview .bool { 11 | color: #fde3a7; } 12 | .jsonview .num { 13 | color: #bf55ec; } 14 | .jsonview .string { 15 | color: #00b16a; 16 | white-space: pre-wrap; } 17 | .jsonview .string.multiline { 18 | display: inline-block; 19 | vertical-align: text-top; } 20 | .jsonview .collapser { 21 | position: absolute; 22 | left: -1em; 23 | cursor: pointer; } 24 | .jsonview .collapsible { 25 | transition: height 1.2s; 26 | transition: width 1.2s; } 27 | .jsonview .collapsible.collapsed { 28 | height: .8em; 29 | width: 1em; 30 | display: inline-block; 31 | overflow: hidden; 32 | margin: 0; } 33 | .jsonview .collapsible.collapsed:before { 34 | content: "…"; 35 | width: 1em; 36 | margin-left: .2em; } 37 | .jsonview .collapser.collapsed { 38 | transform: rotate(0deg); } 39 | .jsonview .q { 40 | display: inline-block; 41 | width: 0px; 42 | color: transparent; } 43 | .jsonview li { 44 | position: relative; } 45 | .jsonview ul { 46 | list-style: none; 47 | margin: 0 0 0 2em; 48 | padding: 0; } 49 | .jsonview h1 { 50 | font-size: 1.2em; } 51 | 52 | /*# sourceMappingURL=jquery.jsonview.css.map */ 53 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/layer/layim/data/groups.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": 1, 3 | "msg": "ok", 4 | "data": [ 5 | { 6 | "id": "100001", 7 | "name": "無言的蒁説", 8 | "face": "img/a1.jpg" 9 | }, 10 | { 11 | "id": "100002", 12 | "name": "婷宝奢侈品", 13 | "face": "img/a2.jpg" 14 | }, 15 | { 16 | "id": "100003", 17 | "name": "忆恨思爱", 18 | "face": "img/a3.jpg" 19 | }, 20 | { 21 | "id": "100004", 22 | "name": "天涯奥拓慢", 23 | "face": "img/a4.jpg" 24 | }, 25 | { 26 | "id": "100005", 27 | "name": "雨落无声的天空", 28 | "face": "img/a5.jpg" 29 | }, 30 | { 31 | "id": "100006", 32 | "name": "李越LycorisRadiate", 33 | "face": "img/a6.jpg" 34 | }, 35 | { 36 | "id": "100007", 37 | "name": "冯胖妞张直丑", 38 | "face": "img/a7.jpg" 39 | }, 40 | { 41 | "id": "100008", 42 | "name": "陈龙hmmm", 43 | "face": "img/a8.jpg" 44 | }, 45 | { 46 | "id": "100009", 47 | "name": "别闹哥胆儿小", 48 | "face": "img/a9.jpg" 49 | }, 50 | { 51 | "id": "100010", 52 | "name": "锅锅锅锅萌哒哒 ", 53 | "face": "img/a10.jpg" 54 | } 55 | ] 56 | } 57 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/suggest/data.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "", 3 | "value": [ 4 | { 5 | "userName": "淳芸", 6 | "shortAccount": "chunyun", 7 | "userId": 20001 8 | }, { 9 | "userName": "orion-01", 10 | "shortAccount": "chunyun", 11 | "userId": 20000 12 | }, { 13 | "userName": "穆晓晨", 14 | "shortAccount": "chunyun", 15 | "userId": 20002 16 | }, { 17 | "userName": "张欢引", 18 | "shortAccount": "chunyun", 19 | "userId": 20003 20 | }, { 21 | "userName": "吴琼", 22 | "shortAccount": "wuqiong", 23 | "userId": 20004 24 | }, { 25 | "userName": "吴东鹏", 26 | "shortAccount": "wudongpeng", 27 | "userId": 20005 28 | }, { 29 | "userName": "黄少铅", 30 | "shortAccount": "huangshaoqian", 31 | "userId": 20006 32 | }, { 33 | "userName": "胡运燕", 34 | "shortAccount": "yunyan", 35 | "userId": 20007 36 | }, { 37 | "userName": "刘幸", 38 | "shortAccount": "liuxing", 39 | "userId": 20008 40 | }, { 41 | "userName": "陈媛媛", 42 | "shortAccount": "chenyuanyuan", 43 | "userId": 20009 44 | }, { 45 | "userName": "旷东林", 46 | "shortAccount": "chunyun", 47 | "userId": 20010 48 | }, { 49 | "userName": "唐宏禹", 50 | "shortAccount": "chunyun", 51 | "userId": 20011 52 | }, { 53 | "userName": "旷东林", 54 | "shortAccount": "kuangdonglin", 55 | "userId": 20010 56 | }, { 57 | "userName": "唐宏禹", 58 | "shortAccount": "tanghongyu", 59 | "userId": 20011 60 | } 61 | ], 62 | "code": 200, 63 | "redirect": "" 64 | } 65 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/content.js: -------------------------------------------------------------------------------- 1 | // var $parentNode = window.parent.document; 2 | 3 | // function $childNode(name) { 4 | // return window.frames[name] 5 | // } 6 | 7 | // // tooltips 8 | // $('.tooltip-demo').tooltip({ 9 | // selector: "[data-toggle=tooltip]", 10 | // container: "body" 11 | // }); 12 | 13 | // // 使用animation.css修改Bootstrap Modal 14 | // $('.modal').appendTo("body"); 15 | 16 | // $("[data-toggle=popover]").popover(); 17 | 18 | 19 | //判断当前页面是否在iframe中 20 | if (top == this) { 21 | var gohome = '
'; 22 | $('body').append(gohome); 23 | } 24 | 25 | //animation.css 26 | function animationHover(element, animation) { 27 | element = $(element); 28 | element.hover( 29 | function () { 30 | element.addClass('animated ' + animation); 31 | }, 32 | function () { 33 | //动画完成之前移除class 34 | window.setTimeout(function () { 35 | element.removeClass('animated ' + animation); 36 | }, 2000); 37 | }); 38 | } 39 | 40 | //拖动面板 41 | function WinMove() { 42 | var element = "[class*=col]"; 43 | var handle = ".ibox-title"; 44 | var connect = "[class*=col]"; 45 | $(element).sortable({ 46 | handle: handle, 47 | connectWith: connect, 48 | tolerance: 'pointer', 49 | forcePlaceholderSize: true, 50 | opacity: 0.8, 51 | }) 52 | .disableSelection(); 53 | }; 54 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/ntriples/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: NTriples mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 15 | 28 | 29 |
30 |

NTriples mode

31 |
32 | 39 |
40 | 41 | 44 |

MIME types defined: text/n-triples.

45 |
46 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/spreadsheet/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Spreadsheet mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

Spreadsheet mode

28 |
29 | 30 | 37 | 38 |

MIME types defined: text/x-spreadsheet.

39 | 40 |

The Spreadsheet Mode

41 |

Created by Robert Plummer

42 |
43 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/http/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: HTTP mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

HTTP mode

27 | 28 | 29 |
39 | 40 | 43 | 44 |

MIME types defined: message/http.

45 |
46 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/exception/MyAccessDeniedHandler.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.exception; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | import org.springframework.security.access.AccessDeniedException; 6 | import org.springframework.security.core.Authentication; 7 | import org.springframework.security.core.context.SecurityContextHolder; 8 | import org.springframework.security.web.access.AccessDeniedHandler; 9 | import org.springframework.stereotype.Component; 10 | 11 | import javax.servlet.ServletException; 12 | import javax.servlet.http.HttpServletRequest; 13 | import javax.servlet.http.HttpServletResponse; 14 | import java.io.IOException; 15 | 16 | /** 17 | * 18 | * @Title: MyAccessDeniedHandler.java 19 | * @Package org.bham.btcert.exception 20 | * @Description: TODO handle 403 page 21 | * @author rxl635@student.bham.ac.uk 22 | * @version V1.0 23 | */ 24 | 25 | @Component 26 | public class MyAccessDeniedHandler implements AccessDeniedHandler { 27 | 28 | private static Logger logger = LoggerFactory.getLogger(MyAccessDeniedHandler.class); 29 | 30 | @Override 31 | public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, 32 | AccessDeniedException e) throws IOException, ServletException { 33 | 34 | Authentication auth = SecurityContextHolder.getContext().getAuthentication(); 35 | 36 | if (auth != null) { 37 | logger.info("User '" + auth.getName() + "' attempted to access the protected URL: " 38 | + httpServletRequest.getRequestURI()); 39 | } 40 | 41 | httpServletResponse.sendRedirect(httpServletRequest.getContextPath() + "/403"); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/solr/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Solr mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 20 | 33 | 34 |
35 |

Solr mode

36 | 37 |
38 | 47 |
48 | 49 | 55 | 56 |

MIME types defined: text/x-solr.

57 |
58 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/z80/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Z80 assembly mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Z80 assembly mode

27 | 28 | 29 |
44 | 45 | 50 | 51 |

MIME type defined: text/x-z80.

52 |
53 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/ecl/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: ECL mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

ECL mode

27 |
45 | 48 | 49 |

Based on CodeMirror's clike mode. For more information see HPCC Systems web site.

50 |

MIME types defined: text/x-ecl.

51 | 52 |
53 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/rust/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Rust mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Rust mode

27 | 28 | 29 |
52 | 53 | 58 | 59 |

MIME types defined: text/x-rustsrc.

60 |
61 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/iCheck/custom.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Square skin, green 2 | ----------------------------------- */ 3 | .icheckbox_square-green, 4 | .iradio_square-green { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 22px; 11 | height: 22px; 12 | background: url(green.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_square-green { 18 | background-position: 0 0; 19 | } 20 | .icheckbox_square-green.hover { 21 | background-position: -24px 0; 22 | } 23 | .icheckbox_square-green.checked { 24 | background-position: -48px 0; 25 | } 26 | .icheckbox_square-green.disabled { 27 | background-position: -72px 0; 28 | cursor: default; 29 | } 30 | .icheckbox_square-green.checked.disabled { 31 | background-position: -96px 0; 32 | } 33 | 34 | .iradio_square-green { 35 | background-position: -120px 0; 36 | } 37 | .iradio_square-green.hover { 38 | background-position: -144px 0; 39 | } 40 | .iradio_square-green.checked { 41 | background-position: -168px 0; 42 | } 43 | .iradio_square-green.disabled { 44 | background-position: -192px 0; 45 | cursor: default; 46 | } 47 | .iradio_square-green.checked.disabled { 48 | background-position: -216px 0; 49 | } 50 | 51 | /* HiDPI support */ 52 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { 53 | .icheckbox_square-green, 54 | .iradio_square-green { 55 | background-image: url(green@2x.png); 56 | -webkit-background-size: 240px 24px; 57 | background-size: 240px 24px; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/bootstrap-table/bootstrap-table-mobile.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * bootstrap-table - v1.9.0 - 2015-09-30 3 | * https://github.com/wenzhixin/bootstrap-table 4 | * Copyright (c) 2015 zhixin wen 5 | * Licensed MIT License 6 | */ 7 | !function(a){"use strict";var b=function(b,c){b.options.columnsHidden.length>0&&a.each(b.columns,function(d,e){-1!==b.options.columnsHidden.indexOf(e.field)&&e.visible!==c&&b.toggleColumn(a.fn.bootstrapTable.utils.getFieldIndex(b.columns,e.field),c,!0)})},c=function(a){(a.options.height||a.options.showFooter)&&setTimeout(a.resetView,1)},d=function(a,b,d){a.options.minHeight?b<=a.options.minWidth&&d<=a.options.minHeight?e(a):b>a.options.minWidth&&d>a.options.minHeight&&f(a):b<=a.options.minWidth?e(a):b>a.options.minWidth&&f(a),c(a)},e=function(a){g(a,!1),b(a,!1)},f=function(a){g(a,!0),b(a,!0)},g=function(a,b){a.options.cardView=b,a.toggleView()},h=function(a,b){var c;return function(){var d=this,e=arguments,f=function(){c=null,a.apply(d,e)};clearTimeout(c),c=setTimeout(f,b)}};a.extend(a.fn.bootstrapTable.defaults,{mobileResponsive:!1,minWidth:562,minHeight:void 0,heightThreshold:100,checkOnInit:!0,columnsHidden:[]});var i=a.fn.bootstrapTable.Constructor,j=i.prototype.init;i.prototype.init=function(){if(j.apply(this,Array.prototype.slice.apply(arguments)),this.options.mobileResponsive&&this.options.minWidth){var b=this,c={width:a(window).width(),height:a(window).height()};if(a(window).on("resize orientationchange",h(function(){var e=a(this).height(),f=a(this).width();(Math.abs(c.height-e)>b.options.heightThreshold||c.width!=f)&&(d(b,f,e),c={width:f,height:e})},200)),this.options.checkOnInit){var e=a(window).height(),f=a(window).width();d(this,f,e),c={width:f,height:e}}}}}(jQuery); 8 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/config/WebMvcConfig.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.config; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 5 | import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; 6 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 7 | 8 | /** 9 | * 10 | * @Title: WebMvcConfig.java 11 | * @Package org.bham.btcert.config 12 | * @Description: this is the WebMvcConfig 13 | * @author rxl635@student.bham.ac.uk 14 | * @version V1.0 15 | */ 16 | 17 | @Configuration 18 | public class WebMvcConfig extends WebMvcConfigurerAdapter { 19 | 20 | @Override 21 | public void addViewControllers(ViewControllerRegistry registry) { 22 | /* 23 | * registry.addViewController("/home").setViewName("home"); 24 | * registry.addViewController("/").setViewName("home"); 25 | * registry.addViewController("/hello").setViewName("hello"); 26 | * registry.addViewController("/login").setViewName("login"); 27 | */ 28 | } 29 | 30 | @Override 31 | public void addResourceHandlers(ResourceHandlerRegistry registry) { 32 | /* 33 | * registry.addResourceHandler("/error/**").addResourceLocations( 34 | * "classpath:/static/"); 35 | * registry.addResourceHandler("/static/**").addResourceLocations( 36 | * "classpath:/static/"); 37 | * registry.addResourceHandler("/css/**").addResourceLocations( 38 | * "classpath:/static/css/"); 39 | * registry.addResourceHandler("/images/**").addResourceLocations( 40 | * "classpath:/static/images/"); 41 | * registry.addResourceHandler("/js/**").addResourceLocations( 42 | * "classpath:/static/js/"); 43 | */ 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/turtle/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Turtle mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Turtle mode

27 |
41 | 47 | 48 |

MIME types defined: text/turtle.

49 | 50 |
51 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/pascal/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Pascal mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Pascal mode

27 | 28 | 29 |
52 | 53 | 59 | 60 |

MIME types defined: text/x-pascal.

61 |
62 | -------------------------------------------------------------------------------- /src/main/resources/templates/error/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 |
7 | 8 | 9 |
10 | 18 | 25 | 26 | 27 |
28 | 29 |
30 | 31 |
32 |
33 |
34 |
35 |
36 |
37 |

404 - We can not find the resource!

38 |
return to home
39 |
40 |
41 |
42 | 43 |
44 |
45 | 46 | 47 |
48 | 49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/pig/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Pig Latin mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Pig Latin mode

27 |
39 | 40 | 47 | 48 |

49 | Simple mode that handles Pig Latin language. 50 |

51 | 52 |

MIME type defined: text/x-pig 53 | (PIG code) 54 | 55 |

56 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/utils/merkle/BytesFormatter.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.utils.merkle; 2 | 3 | import java.util.Arrays; 4 | 5 | import org.apache.commons.codec.binary.Base64; 6 | import org.apache.commons.codec.binary.Hex; 7 | 8 | /** 9 | * 10 | * @Title: BytesFormatter.java 11 | * @Package org.bham.btcert.utils.merkle 12 | * @Description: BytesFormatter 13 | * @author rxl635@student.bham.ac.uk 14 | * @version V1.0 15 | */ 16 | public class BytesFormatter { 17 | 18 | private byte[] _bytes; 19 | 20 | public BytesFormatter(byte[] bytes) { 21 | // Preconditions.checkArgument(bytes.length == 32); 22 | this._bytes = bytes; 23 | } 24 | 25 | public byte[] getBytes() { 26 | return this._bytes; 27 | } 28 | 29 | public String toHex() { 30 | return Hex.encodeHexString(this._bytes); 31 | } 32 | 33 | public String toBinary() { 34 | StringBuilder sb = new StringBuilder(); 35 | for (int i = 0; i < this._bytes.length; i++) { 36 | Byte b = this._bytes[i]; 37 | sb.append(String.format("%8s", Integer.toBinaryString(b & 0xFF)).replace(' ', '0')); 38 | } 39 | return sb.toString(); 40 | } 41 | 42 | @Override 43 | public String toString() { 44 | return Base64.encodeBase64URLSafeString(this._bytes); 45 | } 46 | 47 | @Override 48 | public int hashCode() { 49 | final int prime = 31; 50 | int result = 1; 51 | result = prime * result + Arrays.hashCode(_bytes); 52 | return result; 53 | } 54 | 55 | @Override 56 | public boolean equals(Object obj) { 57 | if (this == obj) 58 | return true; 59 | if (obj == null) 60 | return false; 61 | if (getClass() != obj.getClass()) 62 | return false; 63 | BytesFormatter other = (BytesFormatter) obj; 64 | if (!Arrays.equals(_bytes, other._bytes)) 65 | return false; 66 | return true; 67 | } 68 | 69 | } 70 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/vbscript/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: VBScript mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

VBScript mode

27 | 28 | 29 |
46 | 47 | 53 | 54 |

MIME types defined: text/vbscript.

55 |
56 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/gherkin/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Gherkin mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Gherkin mode

27 |
42 | 45 | 46 |

MIME types defined: text/x-feature.

47 | 48 |
49 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/properties/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Properties files mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Properties files mode

27 |
46 | 49 | 50 |

MIME types defined: text/x-properties, 51 | text/x-ini.

52 | 53 |
54 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/model/certificate/Signature.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.model.certificate; 2 | 3 | import java.util.HashMap; 4 | import java.util.List; 5 | 6 | /** 7 | * 8 | * @Title: Signature.java 9 | * @Package org.bham.btcert.model.certificate 10 | * @Description: TODO 11 | * @author rxl635@student.bham.ac.uk 12 | * @version V1.0 13 | */ 14 | public class Signature { 15 | 16 | private String context; 17 | private List typelist; 18 | private String targetHash; 19 | private String merkleRoot; 20 | private List> proof; 21 | private List anchors; 22 | public String getContext() { 23 | return context; 24 | } 25 | public void setContext(String context) { 26 | this.context = context; 27 | } 28 | public List getTypelist() { 29 | return typelist; 30 | } 31 | public void setTypelist(List typelist) { 32 | this.typelist = typelist; 33 | } 34 | public String getTargetHash() { 35 | return targetHash; 36 | } 37 | public void setTargetHash(String targetHash) { 38 | this.targetHash = targetHash; 39 | } 40 | public String getMerkleRoot() { 41 | return merkleRoot; 42 | } 43 | public void setMerkleRoot(String merkleRoot) { 44 | this.merkleRoot = merkleRoot; 45 | } 46 | public List> getProof() { 47 | return proof; 48 | } 49 | public void setProof(List> proof) { 50 | this.proof = proof; 51 | } 52 | public List getAnchors() { 53 | return anchors; 54 | } 55 | public void setAnchors(List anchors) { 56 | this.anchors = anchors; 57 | } 58 | @Override 59 | public String toString() { 60 | return "Signature [context=" + context + ", typelist=" + typelist + ", targetHash=" + targetHash 61 | + ", merkleRoot=" + merkleRoot + ", proof=" + proof + ", anchors=" + anchors + "]"; 62 | } 63 | 64 | } 65 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/javascript/typescript.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: TypeScript mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

TypeScript mode

27 | 28 | 29 |
51 | 52 | 59 | 60 |

This is a specialization of the JavaScript mode.

61 |
62 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/layer/layim/data/group.json: -------------------------------------------------------------------------------- 1 | { 2 | "status": 1, 3 | "msg": "ok", 4 | "data": [ 5 | { 6 | "name": "H+交流群", 7 | "nums": 36, 8 | "id": 1, 9 | "item": [ 10 | { 11 | "id": "101", 12 | "name": "H+ Bug反馈", 13 | "face": "http://tp2.sinaimg.cn/2211874245/180/40050524279/0" 14 | }, 15 | { 16 | "id": "102", 17 | "name": "H+ 技术交流", 18 | "face": "http://tp3.sinaimg.cn/1820711170/180/1286855219/1" 19 | } 20 | ] 21 | }, 22 | { 23 | "name": "Bootstrap", 24 | "nums": 16, 25 | "id": 2, 26 | "item": [ 27 | { 28 | "id": "103", 29 | "name": "Bootstrap中文", 30 | "face": "http://tp2.sinaimg.cn/2211874245/180/40050524279/0" 31 | }, 32 | { 33 | "id": "104", 34 | "name": "Bootstrap资源", 35 | "face": "http://tp3.sinaimg.cn/1820711170/180/1286855219/1" 36 | } 37 | ] 38 | }, 39 | { 40 | "name": "WebApp", 41 | "nums": 106, 42 | "id": 3, 43 | "item": [ 44 | { 45 | "id": "105", 46 | "name": "移动开发", 47 | "face": "http://tp2.sinaimg.cn/2211874245/180/40050524279/0" 48 | }, 49 | { 50 | "id": "106", 51 | "name": "H5前言", 52 | "face": "http://tp3.sinaimg.cn/1820711170/180/1286855219/1" 53 | } 54 | ] 55 | } 56 | ] 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/model/certificate/OperateDetail.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.model.certificate; 2 | 3 | import org.springframework.data.annotation.Id; 4 | import org.springframework.data.mongodb.core.mapping.Document; 5 | 6 | /** 7 | * 8 | * @Title: OperateDetail.java 9 | * @Package org.bham.btcert.model.certificate 10 | * @Description: TODO 11 | * @author rxl635@student.bham.ac.uk 12 | * @version V1.0 13 | */ 14 | @Document(collection = "tansac_info") 15 | public class OperateDetail { 16 | 17 | @Id 18 | private String id; 19 | 20 | private String cert_id; //证书号码 21 | private String user_id; //操作人ID 22 | private String user_name; //操作人姓名 23 | private String oper_type; //操作类型 24 | private String oper_time; //操作时间 25 | 26 | public String getId() { 27 | return id; 28 | } 29 | public void setId(String id) { 30 | this.id = id; 31 | } 32 | public String getCert_id() { 33 | return cert_id; 34 | } 35 | public void setCert_id(String cert_id) { 36 | this.cert_id = cert_id; 37 | } 38 | public String getUser_id() { 39 | return user_id; 40 | } 41 | public void setUser_id(String user_id) { 42 | this.user_id = user_id; 43 | } 44 | public String getUser_name() { 45 | return user_name; 46 | } 47 | public void setUser_name(String user_name) { 48 | this.user_name = user_name; 49 | } 50 | public String getOper_type() { 51 | return oper_type; 52 | } 53 | public void setOper_type(String oper_type) { 54 | this.oper_type = oper_type; 55 | } 56 | public String getOper_time() { 57 | return oper_time; 58 | } 59 | public void setOper_time(String oper_time) { 60 | this.oper_time = oper_time; 61 | } 62 | @Override 63 | public String toString() { 64 | return "OperateDetail [id=" + id + ", cert_id=" + cert_id + ", user_id=" + user_id + ", user_name=" + user_name 65 | + ", oper_type=" + oper_type + ", oper_time=" + oper_time + "]"; 66 | } 67 | 68 | } 69 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/sass/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Sass mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

Sass mode

28 |
58 | 64 | 65 |

MIME types defined: text/x-sass.

66 |
67 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/perl/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Perl mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Perl mode

27 | 28 | 29 |
67 | 68 | 73 | 74 |

MIME types defined: text/x-perl.

75 |
76 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/idl/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: IDL mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

IDL mode

27 | 28 |
52 | 62 | 63 |

MIME types defined: text/x-idl.

64 |
65 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/model/PageModel.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.model; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 7 | * @Title: PageModel.java 8 | * @Package org.bham.btcert.model 9 | * @Description: TODO 10 | * @author rxl635@student.bham.ac.uk 11 | * @version V1.0 12 | */ 13 | public class PageModel { 14 | 15 | //查詢條件 16 | private String queryObject; 17 | //排序字段 18 | private String sortColumn; 19 | //排序方式 20 | private String sortType; //ASC, DESC; 21 | // 结果集 22 | private List rows; 23 | // 总数 24 | private int total; 25 | // 每页多少条数据 26 | private int pageSize = 20; 27 | // 第几页 28 | private int pageNumber = 1; 29 | // 跳过几条数 30 | private int skip = 0; 31 | 32 | public String getQueryObject() { 33 | return queryObject; 34 | } 35 | 36 | public void setQueryObject(String queryObject) { 37 | this.queryObject = queryObject; 38 | } 39 | 40 | public String getSortColumn() { 41 | return sortColumn; 42 | } 43 | 44 | public void setSortColumn(String sortColumn) { 45 | this.sortColumn = sortColumn; 46 | } 47 | 48 | public String getSortType() { 49 | return sortType; 50 | } 51 | 52 | public void setSortType(String sortType) { 53 | this.sortType = sortType; 54 | } 55 | 56 | public List getRows() { 57 | return rows; 58 | } 59 | 60 | public void setRows(List rows) { 61 | this.rows = rows; 62 | } 63 | 64 | public int getTotal() { 65 | return total; 66 | } 67 | 68 | public void setTotal(int total) { 69 | this.total = total; 70 | } 71 | 72 | public int getPageSize() { 73 | return pageSize; 74 | } 75 | 76 | public void setPageSize(int pageSize) { 77 | this.pageSize = pageSize; 78 | } 79 | 80 | public int getPageNumber() { 81 | return pageNumber; 82 | } 83 | 84 | public void setPageNumber(int pageNumber) { 85 | this.pageNumber = pageNumber; 86 | } 87 | 88 | public int getSkip() { 89 | return skip; 90 | } 91 | 92 | public void setSkip(int skip) { 93 | this.skip = skip; 94 | } 95 | 96 | } 97 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/dart/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Dart mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Dart mode

27 |
28 | 62 |
63 | 64 | 70 | 71 |
72 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/xml/test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | var mode = CodeMirror.getMode({indentUnit: 2}, "xml"), mname = "xml"; 6 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), mname); } 7 | 8 | MT("matching", 9 | "[tag&bracket <][tag top][tag&bracket >]", 10 | " text", 11 | " [tag&bracket <][tag inner][tag&bracket />]", 12 | "[tag&bracket ]"); 13 | 14 | MT("nonmatching", 15 | "[tag&bracket <][tag top][tag&bracket >]", 16 | " [tag&bracket <][tag inner][tag&bracket />]", 17 | " [tag&bracket ]"); 18 | 19 | MT("doctype", 20 | "[meta ]", 21 | "[tag&bracket <][tag top][tag&bracket />]"); 22 | 23 | MT("cdata", 24 | "[tag&bracket <][tag top][tag&bracket >]", 25 | " [atom ]", 27 | "[tag&bracket ]"); 28 | 29 | // HTML tests 30 | mode = CodeMirror.getMode({indentUnit: 2}, "text/html"); 31 | 32 | MT("selfclose", 33 | "[tag&bracket <][tag html][tag&bracket >]", 34 | " [tag&bracket <][tag link] [attribute rel]=[string stylesheet] [attribute href]=[string \"/foobar\"][tag&bracket >]", 35 | "[tag&bracket ]"); 36 | 37 | MT("list", 38 | "[tag&bracket <][tag ol][tag&bracket >]", 39 | " [tag&bracket <][tag li][tag&bracket >]one", 40 | " [tag&bracket <][tag li][tag&bracket >]two", 41 | "[tag&bracket ]"); 42 | 43 | MT("valueless", 44 | "[tag&bracket <][tag input] [attribute type]=[string checkbox] [attribute checked][tag&bracket />]"); 45 | 46 | MT("pThenArticle", 47 | "[tag&bracket <][tag p][tag&bracket >]", 48 | " foo", 49 | "[tag&bracket <][tag article][tag&bracket >]bar"); 50 | 51 | })(); 52 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/jinja2/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Jinja2 mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Jinja2 mode

27 |
49 | 54 |
55 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/blueimp/css/blueimp-gallery-indicator.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | /* 3 | * blueimp Gallery Indicator CSS 1.1.0 4 | * https://github.com/blueimp/Gallery 5 | * 6 | * Copyright 2013, Sebastian Tschan 7 | * https://blueimp.net 8 | * 9 | * Licensed under the MIT license: 10 | * http://www.opensource.org/licenses/MIT 11 | */ 12 | 13 | .blueimp-gallery > .indicator { 14 | position: absolute; 15 | top: auto; 16 | right: 15px; 17 | bottom: 15px; 18 | left: 15px; 19 | margin: 0 40px; 20 | padding: 0; 21 | list-style: none; 22 | text-align: center; 23 | line-height: 10px; 24 | display: none; 25 | } 26 | .blueimp-gallery > .indicator > li { 27 | display: inline-block; 28 | width: 9px; 29 | height: 9px; 30 | margin: 6px 3px 0 3px; 31 | -webkit-box-sizing: content-box; 32 | -moz-box-sizing: content-box; 33 | box-sizing: content-box; 34 | border: 1px solid transparent; 35 | background: #ccc; 36 | background: rgba(255, 255, 255, 0.25) center no-repeat; 37 | border-radius: 5px; 38 | box-shadow: 0 0 2px #000; 39 | opacity: 0.5; 40 | cursor: pointer; 41 | } 42 | .blueimp-gallery > .indicator > li:hover, 43 | .blueimp-gallery > .indicator > .active { 44 | background-color: #fff; 45 | border-color: #fff; 46 | opacity: 1; 47 | } 48 | .blueimp-gallery-controls > .indicator { 49 | display: block; 50 | /* Fix z-index issues (controls behind slide element) on Android: */ 51 | -webkit-transform: translateZ(0); 52 | -moz-transform: translateZ(0); 53 | -ms-transform: translateZ(0); 54 | -o-transform: translateZ(0); 55 | transform: translateZ(0); 56 | } 57 | .blueimp-gallery-single > .indicator { 58 | display: none; 59 | } 60 | .blueimp-gallery > .indicator { 61 | -webkit-user-select: none; 62 | -khtml-user-select: none; 63 | -moz-user-select: none; 64 | -ms-user-select: none; 65 | user-select: none; 66 | } 67 | 68 | /* IE7 fixes */ 69 | *+html .blueimp-gallery > .indicator > li { 70 | display: inline; 71 | } 72 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/css/less_test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | "use strict"; 6 | 7 | var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-less"); 8 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "less"); } 9 | 10 | MT("variable", 11 | "[variable-2 @base]: [atom #f04615];", 12 | "[qualifier .class] {", 13 | " [property width]: [variable percentage]([number 0.5]); [comment // returns `50%`]", 14 | " [property color]: [variable saturate]([variable-2 @base], [number 5%]);", 15 | "}"); 16 | 17 | MT("amp", 18 | "[qualifier .child], [qualifier .sibling] {", 19 | " [qualifier .parent] [atom &] {", 20 | " [property color]: [keyword black];", 21 | " }", 22 | " [atom &] + [atom &] {", 23 | " [property color]: [keyword red];", 24 | " }", 25 | "}"); 26 | 27 | MT("mixin", 28 | "[qualifier .mixin] ([variable dark]; [variable-2 @color]) {", 29 | " [property color]: [variable darken]([variable-2 @color], [number 10%]);", 30 | "}", 31 | "[qualifier .mixin] ([variable light]; [variable-2 @color]) {", 32 | " [property color]: [variable lighten]([variable-2 @color], [number 10%]);", 33 | "}", 34 | "[qualifier .mixin] ([variable-2 @_]; [variable-2 @color]) {", 35 | " [property display]: [atom block];", 36 | "}", 37 | "[variable-2 @switch]: [variable light];", 38 | "[qualifier .class] {", 39 | " [qualifier .mixin]([variable-2 @switch]; [atom #888]);", 40 | "}"); 41 | 42 | MT("nest", 43 | "[qualifier .one] {", 44 | " [def @media] ([property width]: [number 400px]) {", 45 | " [property font-size]: [number 1.2em];", 46 | " [def @media] [attribute print] [keyword and] [property color] {", 47 | " [property color]: [keyword blue];", 48 | " }", 49 | " }", 50 | "}"); 51 | })(); 52 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/shell/test.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function() { 5 | var mode = CodeMirror.getMode({}, "shell"); 6 | function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } 7 | 8 | MT("var", 9 | "text [def $var] text"); 10 | MT("varBraces", 11 | "text[def ${var}]text"); 12 | MT("varVar", 13 | "text [def $a$b] text"); 14 | MT("varBracesVarBraces", 15 | "text[def ${a}${b}]text"); 16 | 17 | MT("singleQuotedVar", 18 | "[string 'text $var text']"); 19 | MT("singleQuotedVarBraces", 20 | "[string 'text ${var} text']"); 21 | 22 | MT("doubleQuotedVar", 23 | '[string "text ][def $var][string text"]'); 24 | MT("doubleQuotedVarBraces", 25 | '[string "text][def ${var}][string text"]'); 26 | MT("doubleQuotedVarPunct", 27 | '[string "text ][def $@][string text"]'); 28 | MT("doubleQuotedVarVar", 29 | '[string "][def $a$b][string "]'); 30 | MT("doubleQuotedVarBracesVarBraces", 31 | '[string "][def ${a}${b}][string "]'); 32 | 33 | MT("notAString", 34 | "text\\'text"); 35 | MT("escapes", 36 | "outside\\'\\\"\\`\\\\[string \"inside\\`\\'\\\"\\\\`\\$notAVar\"]outside\\$\\(notASubShell\\)"); 37 | 38 | MT("subshell", 39 | "[builtin echo] [quote $(whoami)] s log, stardate [quote `date`]."); 40 | MT("doubleQuotedSubshell", 41 | "[builtin echo] [string \"][quote $(whoami)][string 's log, stardate `date`.\"]"); 42 | 43 | MT("hashbang", 44 | "[meta #!/bin/bash]"); 45 | MT("comment", 46 | "text [comment # Blurb]"); 47 | 48 | MT("numbers", 49 | "[number 0] [number 1] [number 2]"); 50 | MT("keywords", 51 | "[keyword while] [atom true]; [keyword do]", 52 | " [builtin sleep] [number 3]", 53 | "[keyword done]"); 54 | MT("options", 55 | "[builtin ls] [attribute -l] [attribute --human-readable]"); 56 | MT("operator", 57 | "[def var][operator =]value"); 58 | })(); 59 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/dart/dart.js: -------------------------------------------------------------------------------- 1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others 2 | // Distributed under an MIT license: http://codemirror.net/LICENSE 3 | 4 | (function(mod) { 5 | if (typeof exports == "object" && typeof module == "object") // CommonJS 6 | mod(require("../../lib/codemirror"), require("../clike/clike")); 7 | else if (typeof define == "function" && define.amd) // AMD 8 | define(["../../lib/codemirror", "../clike/clike"], mod); 9 | else // Plain browser env 10 | mod(CodeMirror); 11 | })(function(CodeMirror) { 12 | "use strict"; 13 | 14 | var keywords = ("this super static final const abstract class extends external factory " + 15 | "implements get native operator set typedef with enum throw rethrow " + 16 | "assert break case continue default in return new deferred async await " + 17 | "try catch finally do else for if switch while import library export " + 18 | "part of show hide is").split(" "); 19 | var blockKeywords = "try catch finally do else for if switch while".split(" "); 20 | var atoms = "true false null".split(" "); 21 | var builtins = "void bool num int double dynamic var String".split(" "); 22 | 23 | function set(words) { 24 | var obj = {}; 25 | for (var i = 0; i < words.length; ++i) obj[words[i]] = true; 26 | return obj; 27 | } 28 | 29 | CodeMirror.defineMIME("application/dart", { 30 | name: "clike", 31 | keywords: set(keywords), 32 | multiLineStrings: true, 33 | blockKeywords: set(blockKeywords), 34 | builtin: set(builtins), 35 | atoms: set(atoms), 36 | hooks: { 37 | "@": function(stream) { 38 | stream.eatWhile(/[\w\$_]/); 39 | return "meta"; 40 | } 41 | } 42 | }); 43 | 44 | CodeMirror.registerHelper("hintWords", "application/dart", keywords.concat(atoms).concat(builtins)); 45 | 46 | // This is needed to make loading through meta.js work. 47 | CodeMirror.defineMode("dart", function(conf) { 48 | return CodeMirror.getMode(conf, "application/dart"); 49 | }, "clike"); 50 | }); 51 | -------------------------------------------------------------------------------- /src/main/resources/static/jslib/crypto-min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Crypto-JS v2.5.4 3 | * http://code.google.com/p/crypto-js/ 4 | * (c) 2009-2012 by Jeff Mott. All rights reserved. 5 | * http://code.google.com/p/crypto-js/wiki/License 6 | */ 7 | (typeof Crypto=="undefined"||!Crypto.util)&&function(){var e=window.Crypto={},f=e.util={rotl:function(a,b){return a<>>32-b},rotr:function(a,b){return a<<32-b|a>>>b},endian:function(a){if(a.constructor==Number)return f.rotl(a,8)&16711935|f.rotl(a,24)&4278255360;for(var b=0;b0;a--)b.push(Math.floor(Math.random()*256));return b},bytesToWords:function(a){for(var b=[],c=0,d=0;c>>5]|=(a[c]&255)<< 8 | 24-d%32;return b},wordsToBytes:function(a){for(var b=[],c=0;c>>5]>>>24-c%32&255);return b},bytesToHex:function(a){for(var b=[],c=0;c>>4).toString(16)),b.push((a[c]&15).toString(16));return b.join("")},hexToBytes:function(a){for(var b=[],c=0;c>> 9 | 6*(3-e)&63)):b.push("=");return b.join("")},base64ToBytes:function(a){for(var a=a.replace(/[^A-Z0-9+\/]/ig,""),b=[],c=0,d=0;c>>6-d*2);return b}},e=e.charenc={};e.UTF8={stringToBytes:function(a){return g.stringToBytes(unescape(encodeURIComponent(a)))},bytesToString:function(a){return decodeURIComponent(escape(g.bytesToString(a)))}}; 10 | var g=e.Binary={stringToBytes:function(a){for(var b=[],c=0;c 2 | 3 | CodeMirror: Shell mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 14 | 27 | 28 |
29 |

Shell mode

30 | 31 | 32 | 56 | 57 | 64 | 65 |

MIME types defined: text/x-sh.

66 |
67 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/sparql/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: SPARQL mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
27 |

SPARQL mode

28 |
52 | 58 | 59 |

MIME types defined: application/sparql-query.

60 | 61 |
62 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/tornado/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Tornado template mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 27 | 28 |
29 |

Tornado template mode

30 |
50 | 51 | 59 | 60 |

Mode for HTML with embedded Tornado template markup.

61 | 62 |

MIME types defined: text/x-tornado

63 |
64 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/django/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Django template mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 27 | 28 |
29 |

Django template mode

30 |
50 | 51 | 59 | 60 |

Mode for HTML with embedded Django template markup.

61 | 62 |

MIME types defined: text/x-django

63 |
64 | -------------------------------------------------------------------------------- /src/main/resources/static/css/dashboard.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Base structure 3 | */ 4 | 5 | /* Move down content because we have a fixed navbar that is 50px tall */ 6 | body { 7 | padding-top: 50px; 8 | } 9 | 10 | 11 | /* 12 | * Global add-ons 13 | */ 14 | 15 | .sub-header { 16 | padding-bottom: 10px; 17 | border-bottom: 1px solid #eee; 18 | } 19 | 20 | /* 21 | * Top navigation 22 | * Hide default border to remove 1px line. 23 | */ 24 | .navbar-fixed-top { 25 | border: 0; 26 | } 27 | 28 | /* 29 | * Sidebar 30 | */ 31 | 32 | /* Hide for mobile, show later */ 33 | .sidebar { 34 | display: none; 35 | } 36 | @media (min-width: 768px) { 37 | .sidebar { 38 | position: fixed; 39 | top: 51px; 40 | bottom: 0; 41 | left: 0; 42 | z-index: 1000; 43 | display: block; 44 | padding: 20px; 45 | overflow-x: hidden; 46 | overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */ 47 | background-color: #f5f5f5; 48 | border-right: 1px solid #eee; 49 | } 50 | } 51 | 52 | /* Sidebar navigation */ 53 | .nav-sidebar { 54 | margin-right: -21px; /* 20px padding + 1px border */ 55 | margin-bottom: 20px; 56 | margin-left: -20px; 57 | } 58 | .nav-sidebar > li > a { 59 | padding-right: 20px; 60 | padding-left: 20px; 61 | } 62 | .nav-sidebar > .active > a, 63 | .nav-sidebar > .active > a:hover, 64 | .nav-sidebar > .active > a:focus { 65 | color: #fff; 66 | background-color: #428bca; 67 | } 68 | 69 | 70 | /* 71 | * Main content 72 | */ 73 | 74 | .main { 75 | padding: 20px; 76 | } 77 | @media (min-width: 768px) { 78 | .main { 79 | padding-right: 40px; 80 | padding-left: 40px; 81 | } 82 | } 83 | .main .page-header { 84 | margin-top: 0; 85 | } 86 | 87 | 88 | /* 89 | * Placeholder dashboard ideas 90 | */ 91 | 92 | .placeholders { 93 | margin-bottom: 30px; 94 | text-align: center; 95 | } 96 | .placeholders h4 { 97 | margin-bottom: 0; 98 | } 99 | .placeholder { 100 | margin-bottom: 20px; 101 | } 102 | .placeholder img { 103 | display: inline-block; 104 | border-radius: 50%; 105 | } -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/gas/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Gas mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

Gas mode

27 |
28 | 50 |
51 | 52 | 58 | 59 |

Handles AT&T assembler syntax (more specifically this handles 60 | the GNU Assembler (gas) syntax.) 61 | It takes a single optional configuration parameter: 62 | architecture, which can be one of "ARM", 63 | "ARMv6" or "x86". 64 | Including the parameter adds syntax for the registers and special 65 | directives for the supplied architecture. 66 | 67 |

MIME types defined: text/x-gas

68 |
69 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/model/certificate/CertsInfo.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.model.certificate; 2 | 3 | 4 | import java.util.List; 5 | 6 | import org.springframework.data.annotation.Id; 7 | import org.springframework.data.mongodb.core.mapping.Document; 8 | 9 | /** 10 | * 11 | * @Title: CertsInfo.java 12 | * @Package org.bham.btcert.model.certificate 13 | * @Description: TODO 14 | * @author rxl635@student.bham.ac.uk 15 | * @version V1.0 16 | */ 17 | @Document(collection = "certs_info") 18 | public class CertsInfo { 19 | 20 | @Id 21 | private String id; 22 | private String transactionId; 23 | private String recipient; 24 | private String createTime; 25 | private Openbadges openbadges; 26 | 27 | private String cstate; //证书状态 new, checked,merged,valid,revoked 28 | private List odl; //签发细节 29 | public String getId() { 30 | return id; 31 | } 32 | public void setId(String id) { 33 | this.id = id; 34 | } 35 | public String getTransactionId() { 36 | return transactionId; 37 | } 38 | public void setTransactionId(String transactionId) { 39 | this.transactionId = transactionId; 40 | } 41 | public String getRecipient() { 42 | return recipient; 43 | } 44 | public void setRecipient(String recipient) { 45 | this.recipient = recipient; 46 | } 47 | public String getCreateTime() { 48 | return createTime; 49 | } 50 | public void setCreateTime(String createTime) { 51 | this.createTime = createTime; 52 | } 53 | public Openbadges getOpenbadges() { 54 | return openbadges; 55 | } 56 | public void setOpenbadges(Openbadges openbadges) { 57 | this.openbadges = openbadges; 58 | } 59 | public String getCstate() { 60 | return cstate; 61 | } 62 | public void setCstate(String cstate) { 63 | this.cstate = cstate; 64 | } 65 | public List getOdl() { 66 | return odl; 67 | } 68 | public void setOdl(List odl) { 69 | this.odl = odl; 70 | } 71 | @Override 72 | public String toString() { 73 | return "CertsInfo [id=" + id + ", transactionId=" + transactionId + ", recipient=" + recipient + ", createTime=" 74 | + createTime + ", openbadges=" + openbadges + ", cstate=" + cstate + ", odl=" + odl + "]"; 75 | } 76 | 77 | } 78 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/utils/CryptoUtil.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.utils; 2 | 3 | import java.io.IOException; 4 | import java.nio.charset.StandardCharsets; 5 | import java.security.MessageDigest; 6 | import java.security.NoSuchAlgorithmException; 7 | import java.util.UUID; 8 | 9 | import org.bham.btcert.utils.merkle.BytesFormatter; 10 | 11 | /** 12 | * 13 | * @Title: CryptoUtil.java 14 | * @Package org.bham.btcert.utils 15 | * @Description: TODO 16 | * @author rxl635@student.bham.ac.uk 17 | * @version V1.0 18 | */ 19 | public class CryptoUtil { 20 | 21 | private static final String SHA_256 = "SHA-256"; 22 | 23 | public static BytesFormatter hash(byte[] bytes) { 24 | MessageDigest md; 25 | try { 26 | md = MessageDigest.getInstance(SHA_256); 27 | } catch (NoSuchAlgorithmException e) { 28 | throw new RuntimeException(e); 29 | } 30 | md.update(bytes); 31 | return new BytesFormatter(md.digest()); 32 | } 33 | 34 | public static BytesFormatter hash(String text) { 35 | MessageDigest md; 36 | try { 37 | md = MessageDigest.getInstance(SHA_256); 38 | } catch (NoSuchAlgorithmException e) { 39 | throw new RuntimeException(e); 40 | } 41 | byte[] hash = md.digest(text.getBytes(StandardCharsets.UTF_8)); 42 | BytesFormatter bit256 = new BytesFormatter(hash); 43 | return bit256; 44 | } 45 | 46 | 47 | public static String getUUID() { 48 | String uuid = UUID.randomUUID().toString().trim().replaceAll("-", ""); 49 | return uuid; 50 | } 51 | 52 | /** 53 | * 编码 54 | * 55 | * @param bstr 56 | * @return String 57 | */ 58 | @SuppressWarnings("restriction") 59 | public static String base64Encode(byte[] bstr) { 60 | return new sun.misc.BASE64Encoder().encode(bstr); 61 | } 62 | 63 | /** 64 | * 解码 65 | * 66 | * @param str 67 | * @return string 68 | */ 69 | @SuppressWarnings("restriction") 70 | public static String base64Decode(String str) { 71 | byte[] bt = null; 72 | try { 73 | sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder(); 74 | bt = decoder.decodeBuffer(str); 75 | return new String(bt, "utf-8"); 76 | } catch (IOException e) { 77 | e.printStackTrace(); 78 | } 79 | 80 | return null; 81 | } 82 | 83 | } 84 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/duallistbox/bootstrap-duallistbox.css: -------------------------------------------------------------------------------- 1 | .bootstrap-duallistbox-container .buttons { 2 | width:calc(100% + 1px); 3 | margin-bottom: -6px; 4 | box-sizing: border-box; 5 | } 6 | 7 | .bootstrap-duallistbox-container label { 8 | display: block; 9 | } 10 | 11 | .bootstrap-duallistbox-container .info { 12 | display: inline-block; 13 | margin-bottom: 5px; 14 | } 15 | 16 | .bootstrap-duallistbox-container .clear1, 17 | .bootstrap-duallistbox-container .clear2 { 18 | display: none; 19 | font-size: 10px; 20 | } 21 | 22 | .bootstrap-duallistbox-container .box1.filtered .clear1, 23 | .bootstrap-duallistbox-container .box2.filtered .clear2 { 24 | display: inline-block; 25 | } 26 | 27 | .bootstrap-duallistbox-container .move, 28 | .bootstrap-duallistbox-container .remove { 29 | width: 50%;box-sizing: border-box; 30 | } 31 | 32 | .bootstrap-duallistbox-container .btn-group .btn { 33 | border-bottom-left-radius: 0; 34 | border-bottom-right-radius: 0; 35 | } 36 | .bootstrap-duallistbox-container select { 37 | border-top-left-radius: 0; 38 | border-top-right-radius: 0; 39 | } 40 | 41 | .bootstrap-duallistbox-container .moveall, 42 | .bootstrap-duallistbox-container .removeall { 43 | width: 50%;box-sizing: border-box; 44 | } 45 | 46 | .bootstrap-duallistbox-container.bs2compatible .btn-group > .btn + .btn { 47 | margin-left: 0; 48 | } 49 | 50 | .bootstrap-duallistbox-container select { 51 | height: 300px; 52 | box-sizing: border-box; 53 | } 54 | .bootstrap-duallistbox-container select:focus{ 55 | border-color: #e5e6e7!important; 56 | } 57 | 58 | .bootstrap-duallistbox-container .filter { 59 | display: inline-block; 60 | width: 100%; 61 | height: 31px;margin-bottom:-1px; 62 | -webkit-box-sizing: border-box; 63 | -moz-box-sizing: border-box; 64 | } 65 | 66 | .bootstrap-duallistbox-container .filter.placeholder { 67 | color: #aaa; 68 | } 69 | 70 | .bootstrap-duallistbox-container.moveonselect .move, 71 | .bootstrap-duallistbox-container.moveonselect .remove { 72 | display:none; 73 | } 74 | 75 | .bootstrap-duallistbox-container.moveonselect .moveall, 76 | .bootstrap-duallistbox-container.moveonselect .removeall { 77 | width: 100%; 78 | } 79 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/toml/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: TOML Mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
26 |

TOML Mode

27 |
64 | 70 |

The TOML Mode

71 |

Created by Forbes Lindesay.

72 |

MIME type defined: text/x-toml.

73 |
74 | -------------------------------------------------------------------------------- /src/main/resources/static/js/main.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author rxl635@student.bahm.ac.uk 3 | * Copyright 2017,Rujia,Yifan. 4 | * Licensed under MIT (https://github.com/BlockTechCert/BTCert/blob/master/LICENSE) 5 | */ 6 | 7 | $(function(){ 8 | $(".btn-checker").click(function(){ 9 | $(".checker-des").hide(); 10 | $(".checker-login").fadeIn(); 11 | }); 12 | }); 13 | 14 | function getQueryString(name) { 15 | var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); 16 | var r = window.location.search.substr(1).match(reg); 17 | if (r != null) return unescape(r[2]); return null; 18 | } 19 | 20 | 21 | function generatePageHtml(number,func) { 22 | var currentPage =parseInt($(".current-page").val()); 23 | 24 | if(currentPage==1){ 25 | var str = '
    '; 26 | }else{ 27 | var str = '
    • «
    • '; 28 | } 29 | 30 | if(currentPage==number){ 31 | var strAfter = '
    '; 32 | }else{ 33 | var strAfter = '
  • »
'; 34 | } 35 | 36 | for(var i=1;i<=number;i++){ 37 | if(i==$(".current-page").val()){ 38 | str += '
  • ' + i + '
  • '; 39 | }else{ 40 | str += '
  • ' + i + '
  • '; 41 | } 42 | } 43 | str += strAfter; 44 | $("#pages").html(str); 45 | } 46 | 47 | 48 | function prefix_state(state) { 49 | if(state==='passed') 50 | return ' ' + state + ''; 51 | if(state==='new') 52 | return ' ' + state + ''; 53 | if(state==='rejected') 54 | return ' ' + state + ''; 55 | if(state==='merged') 56 | return ' ' + state + ''; 57 | } 58 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/tiki/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Tiki wiki mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 25 | 26 |
    27 |

    Tiki wiki mode

    28 | 29 | 30 |
    87 | 88 | 94 | 95 |
    96 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/octave/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Octave mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
    26 |

    Octave mode

    27 | 28 |
    71 | 81 | 82 |

    MIME types defined: text/x-octave.

    83 |
    84 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/cypher/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Cypher Mode for CodeMirror 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 17 | 30 | 31 |
    32 |

    Cypher Mode for CodeMirror

    33 |
    34 | 40 |
    41 |

    MIME types defined: 42 | application/x-cypher-query 43 |

    44 | 62 | 63 |
    64 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/pegjs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | CodeMirror: PEG.js Mode 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 28 | 29 |
    30 |

    PEG.js Mode

    31 |
    56 | 62 |

    The PEG.js Mode

    63 |

    Created by Forbes Lindesay.

    64 |
    65 | 66 | 67 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/xml/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: XML mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 24 | 25 |
    26 |

    XML mode

    27 |
    39 | 45 |

    The XML mode supports two configuration parameters:

    46 |
    47 |
    htmlMode (boolean)
    48 |
    This switches the mode to parse HTML instead of XML. This 49 | means attributes do not have to be quoted, and some elements 50 | (such as br) do not require a closing tag.
    51 |
    alignCDATA (boolean)
    52 |
    Setting this to true will force the opening tag of CDATA 53 | blocks to not be indented.
    54 |
    55 | 56 |

    MIME types defined: application/xml, text/html.

    57 |
    58 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/prettyfile/bootstrap-prettyfile.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery and Bootsrap3 Plugin prettyFile 3 | * 4 | * version 2.0, Jan 20th, 2014 5 | * by episage, sujin2f 6 | * Git repository : https://github.com/episage/bootstrap-3-pretty-file-upload 7 | */ 8 | ( function( $ ) { 9 | $.fn.extend({ 10 | prettyFile: function( options ) { 11 | var defaults = { 12 | text : "选择文件" 13 | }; 14 | 15 | var options = $.extend(defaults, options); 16 | var plugin = this; 17 | 18 | function make_form( $el, text ) { 19 | $el.wrap('
    '); 20 | 21 | $el.hide(); 22 | $el.after( '\ 23 |
    \ 24 | \ 25 | \ 26 | \ 27 | \ 28 |
    \ 29 | ' ); 30 | 31 | return $el.parent(); 32 | }; 33 | 34 | function bind_change( $wrap, multiple ) { 35 | $wrap.find( 'input[type="file"]' ).change(function () { 36 | // When original file input changes, get its value, show it in the fake input 37 | var files = $( this )[0].files, 38 | info = ''; 39 | 40 | if ( files.length == 0 ) 41 | return false; 42 | 43 | if ( !multiple || files.length == 1 ) { 44 | var path = $( this ).val().split('\\'); 45 | info = path[path.length - 1]; 46 | } else if ( files.length > 1 ) { 47 | // Display number of selected files instead of filenames 48 | info = "已选择了" + files.length + ' 个文件'; 49 | } 50 | 51 | $wrap.find('.input-append input').val( info ); 52 | }); 53 | }; 54 | 55 | function bind_button( $wrap, multiple ) { 56 | $wrap.find( '.input-append' ).click( function( e ) { 57 | e.preventDefault(); 58 | $wrap.find( 'input[type="file"]' ).click(); 59 | }); 60 | }; 61 | 62 | return plugin.each( function() { 63 | $this = $( this ); 64 | 65 | if ( $this ) { 66 | var multiple = $this.attr( 'multiple' ); 67 | 68 | $wrap = make_form( $this, options.text ); 69 | bind_change( $wrap, multiple ); 70 | bind_button( $wrap ); 71 | } 72 | }); 73 | } 74 | }); 75 | }( jQuery )); 76 | 77 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/smalltalk/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Smalltalk mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 16 | 29 | 30 |
    31 |

    Smalltalk mode

    32 |
    55 | 56 | 64 | 65 |

    Simple Smalltalk mode.

    66 | 67 |

    MIME types defined: text/x-stsrc.

    68 |
    69 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/htmlembedded/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Html Embedded Scripts mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 28 | 29 |
    30 |

    Html Embedded Scripts mode

    31 |
    43 | 44 | 52 | 53 |

    Mode for html embedded scripts like JSP and ASP.NET. Depends on HtmlMixed which in turn depends on 54 | JavaScript, CSS and XML.
    Other dependancies include those of the scriping language chosen.

    55 | 56 |

    MIME types defined: application/x-aspx (ASP.NET), 57 | application/x-ejs (Embedded Javascript), application/x-jsp (JavaServer Pages)

    58 |
    59 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/soy/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Soy (Closure Template) mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 29 | 30 |
    31 |

    Soy (Closure Template) mode

    32 |
    55 | 56 | 65 | 66 |

    A mode for Closure Templates (Soy).

    67 |

    MIME type defined: text/x-soy.

    68 |
    69 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/model/StuRevoInfo.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.model; 2 | 3 | import org.springframework.data.annotation.Id; 4 | import org.springframework.data.mongodb.core.mapping.Document; 5 | 6 | /** 7 | * 8 | * @Title: StuRevoInfo.java 9 | * @Package org.bham.btcert.model 10 | * @Description: TODO 11 | * @author rxl635@student.bham.ac.uk 12 | * @version V1.0 13 | */ 14 | @Document(collection = "stu_revo_info") 15 | public class StuRevoInfo { 16 | 17 | @Id 18 | private String id; 19 | 20 | private String u_id; //学生ID 21 | private String u_name; //学生名称 22 | 23 | private String r_pri_key; 24 | private String rb_pri_key; 25 | 26 | private String r_address; //单独回收地址 27 | private String rb_address; //批量回收地址 28 | private String cstate; // revoked, valid 29 | public String getId() { 30 | return id; 31 | } 32 | public void setId(String id) { 33 | this.id = id; 34 | } 35 | public String getU_id() { 36 | return u_id; 37 | } 38 | public void setU_id(String u_id) { 39 | this.u_id = u_id; 40 | } 41 | public String getU_name() { 42 | return u_name; 43 | } 44 | public void setU_name(String u_name) { 45 | this.u_name = u_name; 46 | } 47 | public String getR_pri_key() { 48 | return r_pri_key; 49 | } 50 | public void setR_pri_key(String r_pri_key) { 51 | this.r_pri_key = r_pri_key; 52 | } 53 | public String getRb_pri_key() { 54 | return rb_pri_key; 55 | } 56 | public void setRb_pri_key(String rb_pri_key) { 57 | this.rb_pri_key = rb_pri_key; 58 | } 59 | public String getR_address() { 60 | return r_address; 61 | } 62 | public void setR_address(String r_address) { 63 | this.r_address = r_address; 64 | } 65 | public String getRb_address() { 66 | return rb_address; 67 | } 68 | public void setRb_address(String rb_address) { 69 | this.rb_address = rb_address; 70 | } 71 | public String getCstate() { 72 | return cstate; 73 | } 74 | public void setCstate(String cstate) { 75 | this.cstate = cstate; 76 | } 77 | @Override 78 | public String toString() { 79 | return "StuRevoInfo [id=" + id + ", u_id=" + u_id + ", u_name=" + u_name + ", r_pri_key=" + r_pri_key 80 | + ", rb_pri_key=" + rb_pri_key + ", r_address=" + r_address + ", rb_address=" + rb_address + ", cstate=" 81 | + cstate + "]"; 82 | } 83 | 84 | } 85 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/css/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: CSS mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 27 | 28 |
    29 |

    CSS mode

    30 |
    65 | 70 | 71 |

    MIME types defined: text/css, text/x-scss (demo), text/x-less (demo).

    72 | 73 |

    Parsing/Highlighting Tests: normal, verbose.

    74 | 75 |
    76 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/plugins/ionRangeSlider/ion.rangeSlider.skinFlat.css: -------------------------------------------------------------------------------- 1 | /* Ion.RangeSlider, Flat UI Skin 2 | // css version 1.8.5 3 | // by Denis Ineshin | ionden.com 4 | // ===================================================================================================================*/ 5 | 6 | /* ===================================================================================================================== 7 | // Skin details */ 8 | 9 | .irs-line-mid, 10 | .irs-line-left, 11 | .irs-line-right, 12 | .irs-diapason, 13 | .irs-slider { 14 | background: url(../images/sprite-skin-flat.png) repeat-x; 15 | } 16 | 17 | .irs { 18 | height: 40px; 19 | } 20 | .irs-with-grid { 21 | height: 60px; 22 | } 23 | .irs-line { 24 | height: 12px; top: 25px; 25 | } 26 | .irs-line-left { 27 | height: 12px; 28 | background-position: 0 -30px; 29 | } 30 | .irs-line-mid { 31 | height: 12px; 32 | background-position: 0 0; 33 | } 34 | .irs-line-right { 35 | height: 12px; 36 | background-position: 100% -30px; 37 | } 38 | 39 | .irs-diapason { 40 | height: 12px; top: 25px; 41 | background-position: 0 -60px; 42 | } 43 | 44 | .irs-slider { 45 | width: 16px; height: 18px; 46 | top: 22px; 47 | background-position: 0 -90px; 48 | } 49 | #irs-active-slider, .irs-slider:hover { 50 | background-position: 0 -120px; 51 | } 52 | 53 | .irs-min, .irs-max { 54 | color: #999; 55 | font-size: 10px; line-height: 1.333; 56 | text-shadow: none; 57 | top: 0; padding: 1px 3px; 58 | background: #e1e4e9; 59 | border-radius: 4px; 60 | } 61 | 62 | .irs-from, .irs-to, .irs-single { 63 | color: #fff; 64 | font-size: 10px; line-height: 1.333; 65 | text-shadow: none; 66 | padding: 1px 5px; 67 | background: #ed5565; 68 | border-radius: 4px; 69 | } 70 | .irs-from:after, .irs-to:after, .irs-single:after { 71 | position: absolute; display: block; content: ""; 72 | bottom: -6px; left: 50%; 73 | width: 0; height: 0; 74 | margin-left: -3px; 75 | overflow: hidden; 76 | border: 3px solid transparent; 77 | border-top-color: #ed5565; 78 | } 79 | 80 | 81 | .irs-grid-pol { 82 | background: #e1e4e9; 83 | } 84 | .irs-grid-text { 85 | color: #999; 86 | } 87 | 88 | .irs-disabled { 89 | } 90 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/php/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: PHP mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 30 | 31 |
    32 |

    PHP mode

    33 |
    48 | 49 | 58 | 59 |

    Simple HTML/PHP mode based on 60 | the C-like mode. Depends on XML, 61 | JavaScript, CSS, HTMLMixed, and C-like modes.

    62 | 63 |

    MIME types defined: application/x-httpd-php (HTML with PHP code), text/x-php (plain, non-wrapped PHP code).

    64 |
    65 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/service/CustomUserService.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.service; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | import org.bham.btcert.model.Users; 7 | import org.springframework.beans.factory.annotation.Autowired; 8 | import org.springframework.data.mongodb.core.MongoTemplate; 9 | import org.springframework.data.mongodb.core.query.Criteria; 10 | import org.springframework.data.mongodb.core.query.Query; 11 | import org.springframework.security.core.authority.SimpleGrantedAuthority; 12 | import org.springframework.security.core.userdetails.User; 13 | import org.springframework.security.core.userdetails.UserDetails; 14 | import org.springframework.security.core.userdetails.UserDetailsService; 15 | import org.springframework.security.core.userdetails.UsernameNotFoundException; 16 | import org.springframework.stereotype.Service; 17 | 18 | /** 19 | * 20 | * @Title: CustomUserService.java 21 | * @Package org.bham.btcert.service 22 | * @Description: TODO 23 | * @author rxl635@student.bham.ac.uk 24 | * @version V1.0 25 | */ 26 | 27 | @Service 28 | public class CustomUserService implements UserDetailsService { 29 | 30 | @Autowired 31 | private MongoTemplate mongoTemplate; 32 | 33 | // static final PasswordEncoder passwordEncoder = new 34 | // BCryptPasswordEncoder(); 35 | 36 | @Override 37 | public UserDetails loadUserByUsername(String username) { // 重写loadUserByUsername 38 | 39 | // List userslist = studentService.findByName(username); 40 | // String encodedPassword = passwordEncoder.encode("test"); 41 | 42 | Query query = new Query(Criteria.where("u_name").is(username)); 43 | List userslist = mongoTemplate.find(query, Users.class); 44 | 45 | if (userslist == null || userslist.size() == 0) { 46 | throw new UsernameNotFoundException("Username Not Found"); 47 | } 48 | 49 | List authorities = new ArrayList(); 50 | // userslist.get(0).getRole(); 51 | 52 | String role = userslist.get(0).getRole(); 53 | String[] rs = role.split(","); 54 | for (int i = 0; i < rs.length; i++) { 55 | authorities.add(new SimpleGrantedAuthority(rs[i])); 56 | } 57 | System.err.println("login seccess ----- " + userslist.get(0)); 58 | return new User(username, userslist.get(0).getU_passwd(), authorities); 59 | 60 | } 61 | } -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/modelica/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Modelica mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 27 | 28 |
    29 |

    Modelica mode

    30 | 31 |
    52 | 53 | 62 | 63 |

    Simple mode that tries to handle Modelica as well as it can.

    64 | 65 |

    MIME types defined: text/x-modelica 66 | (Modlica code).

    67 |
    68 | -------------------------------------------------------------------------------- /src/main/java/org/bham/btcert/model/certificate/Openbadges.java: -------------------------------------------------------------------------------- 1 | package org.bham.btcert.model.certificate; 2 | 3 | import java.util.List; 4 | 5 | import org.springframework.data.annotation.Id; 6 | import org.springframework.data.mongodb.core.mapping.Document; 7 | 8 | /** 9 | * 10 | * @Title: Openbadges.java 11 | * @Package org.bham.btcert.model.certificate 12 | * @Description: TODO 13 | * @author rxl635@student.bham.ac.uk 14 | * @version V1.0 15 | */ 16 | @Document(collection = "openbadges") 17 | public class Openbadges { 18 | 19 | 20 | 21 | @Id 22 | private String id; 23 | 24 | private List context; 25 | private String type; 26 | 27 | private Recipient recipient; 28 | private String issuedOn; 29 | private Badge badge; 30 | private Verification verification; 31 | private Signature signature; 32 | public String getId() { 33 | return id; 34 | } 35 | public void setId(String id) { 36 | this.id = id; 37 | } 38 | public List getContext() { 39 | return context; 40 | } 41 | public void setContext(List context) { 42 | this.context = context; 43 | } 44 | public String getType() { 45 | return type; 46 | } 47 | public void setType(String type) { 48 | this.type = type; 49 | } 50 | public Recipient getRecipient() { 51 | return recipient; 52 | } 53 | public void setRecipient(Recipient recipient) { 54 | this.recipient = recipient; 55 | } 56 | public String getIssuedOn() { 57 | return issuedOn; 58 | } 59 | public void setIssuedOn(String issuedOn) { 60 | this.issuedOn = issuedOn; 61 | } 62 | public Badge getBadge() { 63 | return badge; 64 | } 65 | public void setBadge(Badge badge) { 66 | this.badge = badge; 67 | } 68 | public Verification getVerification() { 69 | return verification; 70 | } 71 | public void setVerification(Verification verification) { 72 | this.verification = verification; 73 | } 74 | public Signature getSignature() { 75 | return signature; 76 | } 77 | public void setSignature(Signature signature) { 78 | this.signature = signature; 79 | } 80 | @Override 81 | public String toString() { 82 | return "Openbadges [id=" + id + ", context=" + context + ", type=" + type + ", recipient=" + recipient 83 | + ", issuedOn=" + issuedOn + ", badge=" + badge + ", verification=" + verification + ", signature=" 84 | + signature + "]"; 85 | } 86 | 87 | 88 | } 89 | -------------------------------------------------------------------------------- /src/main/resources/static/jslib/ie-emulation-modes-warning.js: -------------------------------------------------------------------------------- 1 | // NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT 2 | // IT'S JUST JUNK FOR OUR DOCS! 3 | // ++++++++++++++++++++++++++++++++++++++++++ 4 | /*! 5 | * Copyright 2014-2015 Twitter, Inc. 6 | * 7 | * Licensed under the Creative Commons Attribution 3.0 Unported License. For 8 | * details, see https://creativecommons.org/licenses/by/3.0/. 9 | */ 10 | // Intended to prevent false-positive bug reports about Bootstrap not working properly in old versions of IE due to folks testing using IE's unreliable emulation modes. 11 | (function () { 12 | 'use strict'; 13 | 14 | function emulatedIEMajorVersion() { 15 | var groups = /MSIE ([0-9.]+)/.exec(window.navigator.userAgent) 16 | if (groups === null) { 17 | return null 18 | } 19 | var ieVersionNum = parseInt(groups[1], 10) 20 | var ieMajorVersion = Math.floor(ieVersionNum) 21 | return ieMajorVersion 22 | } 23 | 24 | function actualNonEmulatedIEMajorVersion() { 25 | // Detects the actual version of IE in use, even if it's in an older-IE emulation mode. 26 | // IE JavaScript conditional compilation docs: https://msdn.microsoft.com/library/121hztk3%28v=vs.94%29.aspx 27 | // @cc_on docs: https://msdn.microsoft.com/library/8ka90k2e%28v=vs.94%29.aspx 28 | var jscriptVersion = new Function('/*@cc_on return @_jscript_version; @*/')() // jshint ignore:line 29 | if (jscriptVersion === undefined) { 30 | return 11 // IE11+ not in emulation mode 31 | } 32 | if (jscriptVersion < 9) { 33 | return 8 // IE8 (or lower; haven't tested on IE<8) 34 | } 35 | return jscriptVersion // IE9 or IE10 in any mode, or IE11 in non-IE11 mode 36 | } 37 | 38 | var ua = window.navigator.userAgent 39 | if (ua.indexOf('Opera') > -1 || ua.indexOf('Presto') > -1) { 40 | return // Opera, which might pretend to be IE 41 | } 42 | var emulated = emulatedIEMajorVersion() 43 | if (emulated === null) { 44 | return // Not IE 45 | } 46 | var nonEmulated = actualNonEmulatedIEMajorVersion() 47 | 48 | if (emulated !== nonEmulated) { 49 | window.alert('WARNING: You appear to be using IE' + nonEmulated + ' in IE' + emulated + ' emulation mode.\nIE emulation modes can behave significantly differently from ACTUAL older versions of IE.\nPLEASE DON\'T FILE BOOTSTRAP BUGS based on testing in IE emulation modes!') 50 | } 51 | })(); -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/apl/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: APL mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 14 | 27 | 28 |
    29 |

    APL mode

    30 |
    56 | 57 | 64 | 65 |

    Simple mode that tries to handle APL as well as it can.

    66 |

    It attempts to label functions/operators based upon 67 | monadic/dyadic usage (but this is far from fully fleshed out). 68 | This means there are meaningful classnames so hover states can 69 | have popups etc.

    70 | 71 |

    MIME types defined: text/apl (APL code)

    72 |
    73 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/css/login.css: -------------------------------------------------------------------------------- 1 | html{height: 100%;} 2 | body.signin { 3 | background: #18c8f6; 4 | height: auto; 5 | background:url("../img/login-background.jpg") no-repeat center fixed; 6 | -webkit-background-size: cover; 7 | -moz-background-size: cover; 8 | -o-background-size: cover; 9 | background-size: cover; 10 | color: rgba(255,255,255,.95); 11 | } 12 | 13 | .signinpanel { 14 | width: 320px; 15 | margin: 10% auto 0 auto; 16 | } 17 | 18 | .signinpanel .logopanel { 19 | float: none; 20 | width: auto; 21 | padding: 0; 22 | background: none; 23 | } 24 | 25 | .signinpanel .signin-info ul { 26 | list-style: none; 27 | padding: 0; 28 | margin: 20px 0; 29 | } 30 | 31 | .signinpanel .form-control { 32 | display: block; 33 | margin-top: 15px; 34 | } 35 | 36 | .signinpanel .uname { 37 | background: #fff url(../img/user.png) no-repeat 95% center;color:#333; 38 | } 39 | 40 | .signinpanel .pword { 41 | background: #fff url(../img/locked.png) no-repeat 95% center;color:#333; 42 | } 43 | 44 | .signinpanel .btn { 45 | margin-top: 15px; 46 | } 47 | 48 | .signinpanel form { 49 | background: rgba(255, 255, 255, 0.2); 50 | border: 1px solid rgba(255,255,255,.3); 51 | -moz-box-shadow: 0 3px 0 rgba(12, 12, 12, 0.03); 52 | -webkit-box-shadow: 0 3px 0 rgba(12, 12, 12, 0.03); 53 | box-shadow: 0 3px 0 rgba(12, 12, 12, 0.03); 54 | -moz-border-radius: 3px; 55 | -webkit-border-radius: 3px; 56 | border-radius: 3px; 57 | padding: 30px; 58 | } 59 | 60 | .signup-footer{border-top: solid 1px rgba(255,255,255,.3);margin:20px 0;padding-top: 15px;} 61 | 62 | @media screen and (max-width: 768px) { 63 | .signinpanel, 64 | .signuppanel { 65 | margin: 0 auto; 66 | width: 420px!important; 67 | padding: 20px; 68 | } 69 | .signinpanel form { 70 | margin-top: 20px; 71 | } 72 | .signup-footer { 73 | margin-bottom: 10px; 74 | } 75 | .signuppanel .form-control { 76 | margin-bottom: 10px; 77 | } 78 | .signup-footer .pull-left, 79 | .signup-footer .pull-right { 80 | float: none !important; 81 | text-align: center; 82 | } 83 | .signinpanel .signin-info ul { 84 | display: none; 85 | } 86 | } 87 | @media screen and (max-width: 320px) { 88 | .signinpanel, 89 | .signuppanel { 90 | margin:0 20px; 91 | width:auto; 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/haml/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: HAML mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 28 | 29 |
    30 |

    HAML mode

    31 |
    68 | 74 | 75 |

    MIME types defined: text/x-haml.

    76 | 77 |

    Parsing/Highlighting Tests: normal, verbose.

    78 | 79 |
    80 | -------------------------------------------------------------------------------- /src/main/resources/static/admin/js/plugins/codemirror/mode/lua/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | CodeMirror: Lua mode 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 26 | 27 |
    28 |

    Lua mode

    29 |
    70 | 76 | 77 |

    Loosely based on Franciszek 78 | Wawrzak's CodeMirror 79 | 1 mode. One configuration parameter is 80 | supported, specials, to which you can provide an 81 | array of strings to have those identifiers highlighted with 82 | the lua-special style.

    83 |

    MIME types defined: text/x-lua.

    84 | 85 |
    86 | --------------------------------------------------------------------------------