commit
53990223a5
@ -1,4 +1,4 @@
|
|||||||
<div class="tos">
|
<div>
|
||||||
<h1>Privacy Policy</h1>
|
<h1>Privacy Policy</h1>
|
||||||
<span class="last-modified">Last modified: Friday, 13 Oct 2017</span>
|
<span class="last-modified">Last modified: Friday, 13 Oct 2017</span>
|
||||||
<p>By using Services of Icy Network, you acknowledge and agree to these policies.</p>
|
<p>By using Services of Icy Network, you acknowledge and agree to these policies.</p>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<div class="tos">
|
<div>
|
||||||
<h1>Terms of Service</h1>
|
<h1>Terms of Service</h1>
|
||||||
<span class="last-modified">Last modified: Wednesday, 03 Jan 2018</span>
|
<span class="last-modified">Last modified: Wednesday, 03 Jan 2018</span>
|
||||||
<p>Please read the following Terms and Conditions carefully. By using Icy Network services, you signify that you have read, understood and agreed to be bound by these Terms and Conditions. Icy Network reserves the right to modify, replace or remove any of the Terms and Conditions written in this document at any given time without restrictions. We will try to notify you of any such amendments. If you do not agree to these Terms and Conditions, you may not use any of the services provided by Icy Network.</p>
|
<p>Please read the following Terms and Conditions carefully. By using Icy Network services, you signify that you have read, understood and agreed to be bound by these Terms and Conditions. Icy Network reserves the right to modify, replace or remove any of the Terms and Conditions written in this document at any given time without restrictions. We will try to notify you of any such amendments. If you do not agree to these Terms and Conditions, you may not use any of the services provided by Icy Network.</p>
|
||||||
|
12
package-lock.json
generated
12
package-lock.json
generated
@ -962,6 +962,12 @@
|
|||||||
"hoek": "4.2.0"
|
"hoek": "4.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"bootstrap": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-gulJE5dGFo6Q61V/whS6VM4WIyrlydXfCgkE+Gxe5hjrJ8rXLLZlALq7zq2RPhOc45PSwQpJkrTnc2KgD6cvmA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"brace-expansion": {
|
"brace-expansion": {
|
||||||
"version": "1.1.8",
|
"version": "1.1.8",
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz",
|
||||||
@ -5690,6 +5696,12 @@
|
|||||||
"integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=",
|
"integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"popper.js": {
|
||||||
|
"version": "1.12.9",
|
||||||
|
"resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.12.9.tgz",
|
||||||
|
"integrity": "sha1-DfvC3/lsRRuzMu3Pz6r1ZtMx1bM=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"postcss": {
|
"postcss": {
|
||||||
"version": "6.0.14",
|
"version": "6.0.14",
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz",
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.14.tgz",
|
||||||
|
@ -62,11 +62,13 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"babel-loader": "^7.1.2",
|
"babel-loader": "^7.1.2",
|
||||||
"babel-preset-env": "^1.6.1",
|
"babel-preset-env": "^1.6.1",
|
||||||
|
"bootstrap": "^4.0.0",
|
||||||
"concurrently": "^3.5.1",
|
"concurrently": "^3.5.1",
|
||||||
"eslint-plugin-import": "^2.8.0",
|
"eslint-plugin-import": "^2.8.0",
|
||||||
"jquery": "^3.2.1",
|
"jquery": "^3.2.1",
|
||||||
"morgan": "^1.9.0",
|
"morgan": "^1.9.0",
|
||||||
"mustache": "^2.3.0",
|
"mustache": "^2.3.0",
|
||||||
|
"popper.js": "^1.12.9",
|
||||||
"standard": "^10.0.3",
|
"standard": "^10.0.3",
|
||||||
"uglifyjs-webpack-plugin": "^1.1.2",
|
"uglifyjs-webpack-plugin": "^1.1.2",
|
||||||
"vue-clickaway": "^2.1.0",
|
"vue-clickaway": "^2.1.0",
|
||||||
|
@ -1,12 +1,15 @@
|
|||||||
import gm from 'gm'
|
import gm from 'gm'
|
||||||
import url from 'url'
|
import url from 'url'
|
||||||
import path from 'path'
|
import path from 'path'
|
||||||
|
import crypto from 'crypto'
|
||||||
import uuid from 'uuid/v4'
|
import uuid from 'uuid/v4'
|
||||||
|
|
||||||
import http from '../../scripts/http'
|
import http from '../../scripts/http'
|
||||||
|
|
||||||
const fs = require('fs-extra')
|
const fs = require('fs-extra')
|
||||||
|
|
||||||
|
const gravatar = 'https://www.gravatar.com/avatar/'
|
||||||
|
|
||||||
const uploads = path.join(__dirname, '../../', 'usercontent')
|
const uploads = path.join(__dirname, '../../', 'usercontent')
|
||||||
const images = path.join(uploads, 'images')
|
const images = path.join(uploads, 'images')
|
||||||
const maxFileSize = 1000000
|
const maxFileSize = 1000000
|
||||||
@ -72,6 +75,11 @@ async function imageBase64 (baseObj) {
|
|||||||
return {file: fpath}
|
return {file: fpath}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function gravatarURL (email) {
|
||||||
|
let sum = crypto.createHash('md5').update(email).digest('hex')
|
||||||
|
return gravatar + sum + '.jpg'
|
||||||
|
}
|
||||||
|
|
||||||
async function downloadImage (imgUrl, designation) {
|
async function downloadImage (imgUrl, designation) {
|
||||||
if (!imgUrl) return null
|
if (!imgUrl) return null
|
||||||
if (!designation) designation = 'download'
|
if (!designation) designation = 'download'
|
||||||
@ -166,5 +174,6 @@ module.exports = {
|
|||||||
downloadImage: downloadImage,
|
downloadImage: downloadImage,
|
||||||
uploadImage: uploadImage,
|
uploadImage: uploadImage,
|
||||||
imageBase64: imageBase64,
|
imageBase64: imageBase64,
|
||||||
|
gravatarURL: gravatarURL,
|
||||||
types: imageTypes
|
types: imageTypes
|
||||||
}
|
}
|
||||||
|
@ -380,6 +380,7 @@ router.post('/avatar', uploadLimiter, wrap(async (req, res, next) => {
|
|||||||
req.session.user.avatar_file = avatarFile
|
req.session.user.avatar_file = avatarFile
|
||||||
}
|
}
|
||||||
|
|
||||||
|
req.flash('message', {error: false, text: 'Success!'})
|
||||||
res.status(200).jsonp({})
|
res.status(200).jsonp({})
|
||||||
}))
|
}))
|
||||||
|
|
||||||
@ -417,6 +418,32 @@ router.get('/avatar/:id', wrap(async (req, res, next) => {
|
|||||||
res.redirect('/usercontent/images/' + user.avatar_file)
|
res.redirect('/usercontent/images/' + user.avatar_file)
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
router.get('/avatar/gravatar', (req, res, next) => {
|
||||||
|
if (!req.session.user) return next()
|
||||||
|
let email = req.session.user.email
|
||||||
|
|
||||||
|
res.set('Content-Type', 'text/plain')
|
||||||
|
res.end(Image.gravatarURL(email))
|
||||||
|
})
|
||||||
|
|
||||||
|
router.post('/avatar/gravatar', wrap(async (req, res, next) => {
|
||||||
|
if (!req.session.user) return next()
|
||||||
|
let user = req.session.user
|
||||||
|
|
||||||
|
try {
|
||||||
|
let gravURL = await Image.downloadImage(Image.gravatarURL(user.email), 'GRAV-' + user.username)
|
||||||
|
let file = await API.User.changeAvatar(user, gravURL)
|
||||||
|
|
||||||
|
req.session.user.avatar_file = file
|
||||||
|
|
||||||
|
req.flash('message', {error: false, text: 'Success!'})
|
||||||
|
} catch (e) {
|
||||||
|
req.flash('message', {error: true, text: 'Failed to use gravatar avatar.'})
|
||||||
|
}
|
||||||
|
|
||||||
|
res.jsonp({})
|
||||||
|
}))
|
||||||
|
|
||||||
// Redirect to no avatar on 404
|
// Redirect to no avatar on 404
|
||||||
router.use('/avatar', (req, res) => {
|
router.use('/avatar', (req, res) => {
|
||||||
res.redirect('/static/image/avatar.png')
|
res.redirect('/static/image/avatar.png')
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
window.$ = require('jquery')
|
window.$ = window.jQuery = require('jquery')
|
||||||
|
window.Popper = require('popper.js')
|
||||||
|
require('bootstrap')
|
||||||
|
|
||||||
$(document).ready(function () {
|
$(document).ready(function () {
|
||||||
function pwcheck (e) {
|
function pwcheck (e) {
|
||||||
@ -201,11 +203,10 @@ $(document).ready(function () {
|
|||||||
var html = ''
|
var html = ''
|
||||||
for (var i in data) {
|
for (var i in data) {
|
||||||
var article = data[i]
|
var article = data[i]
|
||||||
html += '<div class="prvarticle">'
|
html += '<div class="news-article">'
|
||||||
html += '<a class="title" href="/news/' + article.id + '-' + article.slug + '">' + article.title + '</a>'
|
html += '<h2 class="news-title"><a href="/news/' + article.id + '-' + article.slug + '">' + article.title + '</a></h2>'
|
||||||
html += '<span class="timestamp">Published at ' + new Date(article.created_at) + '</span>'
|
html += '<p class="news-meta">Published at ' + new Date(article.created_at) + '</p>'
|
||||||
html += '<div class="prvcontent">' + article.description + '</div>'
|
html += '<div class="news-content">' + article.content + '</div>'
|
||||||
html += '<a href="/news/' + article.id + '-' + article.slug + '">Read More</a>'
|
|
||||||
html += '</div>'
|
html += '</div>'
|
||||||
}
|
}
|
||||||
$('.newsfeed').html(html)
|
$('.newsfeed').html(html)
|
||||||
@ -244,12 +245,7 @@ $(document).ready(function () {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($('#newAvatar').length) {
|
if ($('#removeAvatar').length) {
|
||||||
$('#newAvatar').click(function (e) {
|
|
||||||
e.preventDefault()
|
|
||||||
window.Dialog.openPartial('Change Avatar', 'avatar')
|
|
||||||
})
|
|
||||||
|
|
||||||
$('#removeAvatar').click(function (e) {
|
$('#removeAvatar').click(function (e) {
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
$.ajax({
|
$.ajax({
|
||||||
@ -303,7 +299,7 @@ $(document).ready(function () {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
$('.loginDiag').click(function (e) {
|
$('.login-dialog-pop').click(function (e) {
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
var url = $(this).attr('href')
|
var url = $(this).attr('href')
|
||||||
var popup = PopupCenter(url, '_blank', 800, 620)
|
var popup = PopupCenter(url, '_blank', 800, 620)
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
body
|
body
|
||||||
margin: 0
|
margin: 0
|
||||||
|
font-family: sans-serif
|
||||||
|
|
||||||
nav
|
nav
|
||||||
display: block
|
display: block
|
||||||
|
@ -1,22 +1,6 @@
|
|||||||
body
|
body
|
||||||
margin: 0
|
margin: 0
|
||||||
color: black
|
color: black
|
||||||
font-family: sans-serif
|
|
||||||
/*background-color: #82fff4;
|
|
||||||
background-image: linear-gradient(-45deg, #80d7ff 25%, transparent 25.5%, transparent 50%,
|
|
||||||
#80d7ff 50.5%, #80d7ff 75%, transparent 75.5%, transparent)
|
|
||||||
height: 100vh;
|
|
||||||
background-size: 50px 50px;*/
|
|
||||||
background: #6fefff
|
|
||||||
background: -moz-linear-gradient(top, #6fefff 0%, #53cbf1 51%, #05abe0 100%)
|
|
||||||
background: -webkit-linear-gradient(top, #6fefff 0%,#53cbf1 51%,#05abe0 100%)
|
|
||||||
background: linear-gradient(to bottom, #6fefff 0%,#53cbf1 51%,#05abe0 100%)
|
|
||||||
|
|
||||||
a
|
|
||||||
color: green
|
|
||||||
text-decoration: none
|
|
||||||
&:hover
|
|
||||||
text-decoration: underline
|
|
||||||
|
|
||||||
.logo
|
.logo
|
||||||
font-size: 8vw
|
font-size: 8vw
|
||||||
@ -109,30 +93,44 @@ a
|
|||||||
&:checked ~ .list
|
&:checked ~ .list
|
||||||
max-height: 500px
|
max-height: 500px
|
||||||
|
|
||||||
section
|
.carousel
|
||||||
font-family: "Open Sans"
|
margin-bottom: 4rem
|
||||||
position: relative
|
|
||||||
min-height: 100vh
|
.carousel-item
|
||||||
.content
|
height: 40rem
|
||||||
position: absolute
|
background-color: #777
|
||||||
left: 0
|
|
||||||
right: 0
|
& > img
|
||||||
top: 0
|
position: absolute
|
||||||
bottom: 40%
|
top: 0
|
||||||
overflow: auto
|
left: 0
|
||||||
background-color: #ffffff
|
min-width: 100%
|
||||||
padding: 20px
|
height: 40rem
|
||||||
&#home
|
|
||||||
h1
|
.marketing .col-lg-4
|
||||||
font-size: 300%
|
margin-bottom: 1.5rem
|
||||||
text-align: center
|
text-align: center
|
||||||
color: green
|
|
||||||
margin-bottom: 0
|
.circular-header
|
||||||
p
|
width: 140px
|
||||||
text-align: center;
|
height: 140px
|
||||||
font-size: 200%
|
vertical-align: middle
|
||||||
color: #0074d0;
|
display: inline-block
|
||||||
font-weight: bold;
|
border-radius: 50% !important
|
||||||
|
line-height: 9rem
|
||||||
|
font-size: 5rem
|
||||||
|
color: #fff
|
||||||
|
|
||||||
|
.news-article
|
||||||
|
margin-bottom: 4rem
|
||||||
|
|
||||||
|
.news-title
|
||||||
|
margin-bottom: .25rem
|
||||||
|
font-size: 2.5rem
|
||||||
|
|
||||||
|
.news-meta
|
||||||
|
margin-bottom: 1.25rem
|
||||||
|
color: #999
|
||||||
|
|
||||||
.divboxes
|
.divboxes
|
||||||
text-align: center
|
text-align: center
|
||||||
@ -178,35 +176,6 @@ section
|
|||||||
code
|
code
|
||||||
white-space: pre
|
white-space: pre
|
||||||
|
|
||||||
label
|
|
||||||
display: block
|
|
||||||
margin-top: 20px
|
|
||||||
|
|
||||||
input:not([type="submit"])
|
|
||||||
padding: 5px
|
|
||||||
font-size: 120%
|
|
||||||
border-radius: 5px
|
|
||||||
border: 1px solid #c1c1c1
|
|
||||||
background-color: #f5f5f5
|
|
||||||
color: #000
|
|
||||||
box-shadow: inset 2px 2px 5px #ddd
|
|
||||||
transition: border 0.1s linear
|
|
||||||
|
|
||||||
button, .button, input[type="submit"]
|
|
||||||
display: block
|
|
||||||
padding: 5px 10px
|
|
||||||
background-color: #fbfbfb
|
|
||||||
color: #000
|
|
||||||
border: 1px solid #c1c1c1
|
|
||||||
border-radius: 5px
|
|
||||||
font-size: 120%
|
|
||||||
margin: 10px 0
|
|
||||||
cursor: pointer
|
|
||||||
&.active
|
|
||||||
background-color: #ddd
|
|
||||||
|
|
||||||
input[disabled]
|
|
||||||
color: #959595
|
|
||||||
|
|
||||||
.button
|
.button
|
||||||
display: inline-block
|
display: inline-block
|
||||||
@ -260,8 +229,8 @@ input[disabled]
|
|||||||
color: #a9a9a9
|
color: #a9a9a9
|
||||||
font-style: italic
|
font-style: italic
|
||||||
|
|
||||||
.dlbtn
|
.app-button
|
||||||
display: block
|
display: inline-block
|
||||||
img
|
img
|
||||||
width: 200px
|
width: 200px
|
||||||
&.apple
|
&.apple
|
||||||
@ -269,71 +238,65 @@ input[disabled]
|
|||||||
width: 175px
|
width: 175px
|
||||||
padding: 0 12px
|
padding: 0 12px
|
||||||
|
|
||||||
.twitterLogin
|
.login-btn
|
||||||
display: block
|
display: block
|
||||||
padding: 10px
|
|
||||||
width: 215px
|
|
||||||
margin-top: 5px
|
|
||||||
background-color: #fff
|
|
||||||
border: 1px solid #ddd
|
|
||||||
border-radius: 5px
|
|
||||||
text-decoration: none
|
text-decoration: none
|
||||||
i
|
border-radius: 5px
|
||||||
color: #03A9F4
|
|
||||||
font-size: 22px
|
|
||||||
span
|
|
||||||
color: #000
|
|
||||||
display: inline-block
|
|
||||||
vertical-align: top
|
|
||||||
margin-top: 3px
|
|
||||||
margin-left: 12px
|
|
||||||
|
|
||||||
.discordLogin
|
|
||||||
display: block
|
|
||||||
background-color: #99AAB5
|
|
||||||
width: 225px
|
|
||||||
height: 40px
|
|
||||||
margin-top: 5px
|
margin-top: 5px
|
||||||
padding: 5px 5px
|
padding: 5px 5px
|
||||||
border-radius: 5px
|
|
||||||
text-decoration: none
|
|
||||||
span
|
|
||||||
color: white
|
|
||||||
vertical-align: top
|
|
||||||
margin-top: 11px
|
|
||||||
margin-left: 3px
|
|
||||||
display: inline-block
|
|
||||||
img
|
|
||||||
width: 45px
|
|
||||||
display: inline-block
|
|
||||||
|
|
||||||
.googleLogin
|
|
||||||
padding: 10px
|
|
||||||
width: 215px
|
width: 215px
|
||||||
margin-top: 5px
|
height: 50px
|
||||||
background-color: #4285f4
|
|
||||||
border: 1px solid #ddd
|
|
||||||
border-radius: 5px
|
|
||||||
text-decoration: none
|
|
||||||
display: block
|
|
||||||
cursor: pointer
|
cursor: pointer
|
||||||
i
|
margin-left: 5px
|
||||||
color: #fff
|
|
||||||
font-size: 22px
|
|
||||||
span
|
|
||||||
color: #fff
|
|
||||||
display: inline-block
|
|
||||||
vertical-align: top
|
|
||||||
margin-top: 3px
|
|
||||||
margin-left: 12px
|
|
||||||
|
|
||||||
.accdisconnect
|
&.twitter-login
|
||||||
margin-top: 5px
|
background-color: #fff
|
||||||
padding: 10px
|
border: 1px solid #ddd
|
||||||
background-color: #ff6c6c
|
line-height: 2.2rem
|
||||||
color: #fff
|
|
||||||
width: 215px
|
i
|
||||||
border-radius: 5px
|
color: #03A9F4
|
||||||
|
font-size: 22px
|
||||||
|
span
|
||||||
|
color: #000
|
||||||
|
display: inline-block
|
||||||
|
vertical-align: top
|
||||||
|
margin-left: 12px
|
||||||
|
|
||||||
|
&.discord-login
|
||||||
|
background-color: #99aab5
|
||||||
|
line-height: 2.4rem
|
||||||
|
|
||||||
|
span
|
||||||
|
color: white
|
||||||
|
vertical-align: top
|
||||||
|
margin-left: 3px
|
||||||
|
display: inline-block
|
||||||
|
img
|
||||||
|
width: 45px
|
||||||
|
display: inline-block
|
||||||
|
|
||||||
|
&.google-login
|
||||||
|
background-color: #4285f4
|
||||||
|
border: 1px solid #ddd
|
||||||
|
line-height: 2.2rem
|
||||||
|
|
||||||
|
i
|
||||||
|
color: #fff
|
||||||
|
font-size: 22px
|
||||||
|
span
|
||||||
|
color: #fff
|
||||||
|
display: inline-block
|
||||||
|
vertical-align: top
|
||||||
|
margin-left: 12px
|
||||||
|
|
||||||
|
&.disconnect
|
||||||
|
margin-top: 5px
|
||||||
|
padding: 10px
|
||||||
|
background-color: #ff6c6c
|
||||||
|
color: #fff
|
||||||
|
width: 215px
|
||||||
|
border-radius: 5px
|
||||||
|
|
||||||
span.divider
|
span.divider
|
||||||
color: #ddd
|
color: #ddd
|
||||||
@ -462,9 +425,6 @@ span.load
|
|||||||
.prvcontent
|
.prvcontent
|
||||||
margin: 10px 0
|
margin: 10px 0
|
||||||
|
|
||||||
.return
|
|
||||||
margin-top: 40px
|
|
||||||
|
|
||||||
.content
|
.content
|
||||||
hr
|
hr
|
||||||
border-color: #ffffff
|
border-color: #ffffff
|
||||||
@ -665,6 +625,39 @@ noscript
|
|||||||
width: 100vw !important
|
width: 100vw !important
|
||||||
min-width: 100vw !important
|
min-width: 100vw !important
|
||||||
|
|
||||||
|
.btn-social
|
||||||
|
width: 28px
|
||||||
|
height: 28px
|
||||||
|
display: block
|
||||||
|
line-height: 28px
|
||||||
|
color: #fff
|
||||||
|
font-size: 120%
|
||||||
|
border-radius: 100px
|
||||||
|
padding: 0 2px
|
||||||
|
margin: 5px
|
||||||
|
&#github
|
||||||
|
background-color: #000
|
||||||
|
&#twitter
|
||||||
|
background-color: #03a9f4
|
||||||
|
&#discord
|
||||||
|
background-color: #2C2F33
|
||||||
|
padding: 3px
|
||||||
|
span
|
||||||
|
background: url("/static/image/discord.svg")
|
||||||
|
background-size: contain
|
||||||
|
width: 22px
|
||||||
|
height: 22px
|
||||||
|
display: block
|
||||||
|
&#rocket-chat
|
||||||
|
background-color: #eee
|
||||||
|
padding: 3px
|
||||||
|
span
|
||||||
|
background: url("/static/image/rocket-chat.svg")
|
||||||
|
background-size: contain
|
||||||
|
width: 22px
|
||||||
|
height: 22px
|
||||||
|
display: block
|
||||||
|
|
||||||
@media all and (max-width: 500px)
|
@media all and (max-width: 500px)
|
||||||
section
|
section
|
||||||
padding: 10px
|
padding: 10px
|
||||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
23
static/image/rocket-chat.svg
Normal file
23
static/image/rocket-chat.svg
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.1" id="Layer_5" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
|
||||||
|
<path fill="#CC3333" d="M491.3,255.3c0-24.1-7.2-47.2-21.4-68.7c-12.8-19.3-30.7-36.4-53.2-50.7c-43.5-27.8-100.6-43.1-160.9-43.1 c-20.1,0-40,1.7-59.2,5.1c-11.9-11.2-25.9-21.2-40.7-29.2c-79-38.3-144.6-0.9-144.6-0.9s60.9,50.1,51,93.9c-27.3,27-42,59.6-42,93.6 c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0,0.3c0,33.9,14.8,66.6,42,93.6c9.9,43.9-51,93.9-51,93.9s65.5,37.4,144.6-0.9 c14.8-8,28.8-18,40.7-29.2c19.2,3.4,39.1,5.1,59.2,5.1c60.3,0,117.4-15.3,160.9-43.1c22.5-14.4,40.4-31.5,53.2-50.7 c14.2-21.5,21.4-44.6,21.4-68.7c0-0.1,0-0.2,0-0.3C491.3,255.6,491.3,255.4,491.3,255.3z"/>
|
||||||
|
<path fill="#FFFFFF" d="M255.9,124.2c113.9,0,206.3,59,206.3,131.8c0,72.8-92.4,131.8-206.3,131.8c-25.4,0-49.7-2.9-72.1-8.3 c-22.8,27.4-73,65.6-121.7,53.3c15.9-17,39.4-45.8,34.3-93.2c-29.2-22.7-46.8-51.8-46.8-83.5C49.6,183.2,142,124.2,255.9,124.2"/>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<circle fill="#CC3333" cx="255.9" cy="256" r="27.4"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<circle fill="#CC3333" cx="351.2" cy="256" r="27.4"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<circle fill="#CC3333" cx="160.6" cy="256" r="27.4"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path fill="#CCCCCC" d="M255.8,372.8c-25.4,0-56.2-4.9-78.7-9.5c-20.1,21-53.7,52.7-99.6,50.3c-5.7,8.6-10.2,13.5-15.5,19.2 c48.7,12.3,98.9-25.8,121.7-53.3c22.4,5.4,46.7,8.3,72.1,8.3c113,0,204.8-58.1,206.3-130C460.7,320.1,368.8,372.8,255.8,372.8z"/>
|
||||||
|
<path fill="none" stroke="#000000" stroke-miterlimit="10" d="M172,350.9"/>
|
||||||
|
<path fill="none" stroke="#000000" stroke-miterlimit="10" d="M200.4,422.9"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.9 KiB |
@ -3,7 +3,6 @@ html
|
|||||||
meta(charset="utf8")
|
meta(charset="utf8")
|
||||||
meta(name="csrf-token", content=csrf)
|
meta(name="csrf-token", content=csrf)
|
||||||
block links
|
block links
|
||||||
link(rel="stylesheet", type="text/css", href="https://fonts.googleapis.com/css?family=Open+Sans")
|
|
||||||
link(rel="stylesheet", type="text/css", href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css")
|
link(rel="stylesheet", type="text/css", href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css")
|
||||||
link(rel="stylesheet", type="text/css", href="/style/main.css")
|
link(rel="stylesheet", type="text/css", href="/style/main.css")
|
||||||
link(rel="stylesheet", type="text/css", href="/style/admin.css")
|
link(rel="stylesheet", type="text/css", href="/style/admin.css")
|
||||||
|
@ -1,61 +1,63 @@
|
|||||||
extends layout
|
extends layout
|
||||||
block title
|
block title
|
||||||
|Icy Network - Authorize Client
|
|Icy Network - Authorize Application
|
||||||
|
|
||||||
block body
|
block body
|
||||||
.wrapper
|
.container.mb-4.mt-4
|
||||||
.boxcont
|
h1 Authorize Application
|
||||||
.box#login
|
p
|
||||||
h1 Authorize OAuth2 Application
|
b= client.title
|
||||||
.left
|
| wants you to give them access to your user details and authenticate you, without giving them your password. The list of things
|
||||||
.application
|
b=client.title
|
||||||
.picture
|
| can and cannot do are provided below.
|
||||||
if client.icon
|
.row.mb-2
|
||||||
img(src=client.icon)
|
.col
|
||||||
else
|
.application
|
||||||
.noicon
|
.picture
|
||||||
i.fa.fa-fw.fa-gears
|
if client.icon
|
||||||
.info
|
img(src=client.icon)
|
||||||
.name= client.title
|
else
|
||||||
.description= client.description
|
.noicon
|
||||||
a.url(href=client.url, target="_blank", rel="nofollow")= client.url
|
|
||||||
form#loginForm(method="POST", action="")
|
|
||||||
input(type="hidden", name="csrf", value=csrf)
|
|
||||||
input(type="hidden", name="decision", value='1')
|
|
||||||
input.authorize(type="submit", value="Authorize")
|
|
||||||
form#loginForm(method="POST", action="")
|
|
||||||
input(type="hidden", name="csrf", value=csrf)
|
|
||||||
input(type="hidden", name="decision", value='0')
|
|
||||||
input.deny(type="submit", value="Deny")
|
|
||||||
.right
|
|
||||||
.haveaccess
|
|
||||||
span This application can
|
|
||||||
ul.nobulletin
|
|
||||||
if scope.indexOf('email') !== -1
|
|
||||||
li
|
|
||||||
i.fa.fa-fw.fa-envelope
|
|
||||||
|See your Email address
|
|
||||||
li
|
|
||||||
i.fa.fa-fw.fa-user
|
|
||||||
|See your Display Name
|
|
||||||
.noaccess
|
|
||||||
span This application cannot
|
|
||||||
ul.nobulletin
|
|
||||||
if scope.indexOf('email') === -1
|
|
||||||
li
|
|
||||||
i.fa.fa-fw.fa-envelope
|
|
||||||
|See your Email address
|
|
||||||
li
|
|
||||||
i.fa.fa-fw.fa-lock
|
|
||||||
|See your Password
|
|
||||||
li
|
|
||||||
i.fa.fa-fw.fa-gears
|
i.fa.fa-fw.fa-gears
|
||||||
|Change your Account Settings
|
.info
|
||||||
if client.verified != 1
|
.name= client.title
|
||||||
.unaffiliated
|
.description= client.description
|
||||||
br
|
a.url(href=client.url, target="_blank", rel="nofollow")= client.url
|
||||||
span
|
form(method="POST", action="")
|
||||||
i.fa.fa-fw.fa-warning
|
input(type="hidden", name="csrf", value=csrf)
|
||||||
|This application is not affiliated with Icy Network
|
input(type="hidden", name="decision", value='1')
|
||||||
i.fa.fa-fw.fa-warning
|
button.btn.btn-success(type="submit") Authorize Access
|
||||||
|
p
|
||||||
|
form(method="POST", action="")
|
||||||
|
input(type="hidden", name="csrf", value=csrf)
|
||||||
|
input(type="hidden", name="decision", value='0')
|
||||||
|
button.btn.btn-danger(type="submit") Deny Access
|
||||||
|
.col
|
||||||
|
.haveaccess
|
||||||
|
span This application can
|
||||||
|
ul.nobulletin
|
||||||
|
if scope.indexOf('email') !== -1
|
||||||
|
li
|
||||||
|
i.fa.fa-fw.fa-envelope
|
||||||
|
|See your Email address
|
||||||
|
li
|
||||||
|
i.fa.fa-fw.fa-user
|
||||||
|
|See your Display Name
|
||||||
|
.noaccess
|
||||||
|
span This application cannot
|
||||||
|
ul.nobulletin
|
||||||
|
if scope.indexOf('email') === -1
|
||||||
|
li
|
||||||
|
i.fa.fa-fw.fa-envelope
|
||||||
|
|See your Email address
|
||||||
|
li
|
||||||
|
i.fa.fa-fw.fa-lock
|
||||||
|
|See your Password
|
||||||
|
li
|
||||||
|
i.fa.fa-fw.fa-gears
|
||||||
|
|Change your Account Settings
|
||||||
|
.alert.alert-info
|
||||||
|
b Note!
|
||||||
|
|You can revoke #{client.title} at any time from your
|
||||||
|
a(href="/user/manage") Account Settings
|
||||||
|
|.
|
||||||
|
@ -4,5 +4,5 @@ block title
|
|||||||
|Icy Network
|
|Icy Network
|
||||||
|
|
||||||
block body
|
block body
|
||||||
.document
|
.container.mt-4
|
||||||
.content !{doc}
|
.content !{doc}
|
||||||
|
@ -3,43 +3,43 @@ block title
|
|||||||
|Icy Network - Donate
|
|Icy Network - Donate
|
||||||
|
|
||||||
block body
|
block body
|
||||||
.wrapper
|
.container.mb-4.mt-4
|
||||||
.boxcont
|
h1 Donate
|
||||||
.box#donate
|
p Donations help us pay for the servers required to keep Icy Network running. Donating any amount would be highly appreciated!
|
||||||
h1 Donate
|
|
||||||
p Donations help us pay for the services required to keep Icy Network running. Donating any amount would be highly appreciated!
|
- var formurl = "https://www.paypal.com/cgi-bin/webscr"
|
||||||
|
if sandbox
|
||||||
- var formurl = "https://www.paypal.com/cgi-bin/webscr"
|
- formurl = "https://www.sandbox.paypal.com/cgi-bin/webscr"
|
||||||
if sandbox
|
|
||||||
- formurl = "https://www.sandbox.paypal.com/cgi-bin/webscr"
|
form(action=formurl, method="post")
|
||||||
|
input(type="hidden" name="cmd" value="_xclick")
|
||||||
form(action=formurl, method="post")
|
input(type="hidden" name="business" value=business)
|
||||||
input(type="hidden" name="cmd" value="_xclick")
|
input(type="hidden" name="item_name" value=name)
|
||||||
input(type="hidden" name="business" value=business)
|
input(type="hidden" name="item_number" value="1")
|
||||||
input(type="hidden" name="item_name" value=name)
|
input(type="hidden" name="no_shipping" value="1")
|
||||||
input(type="hidden" name="item_number" value="1")
|
input(type="hidden" name="quantity" value="1")
|
||||||
input(type="hidden" name="no_shipping" value="1")
|
input(type="hidden" name="tax" value="0")
|
||||||
input(type="hidden" name="quantity" value="1")
|
input(type="hidden" name="notify_url" value=ipn_url)
|
||||||
input(type="hidden" name="tax" value="0")
|
label(for="amount") Amount
|
||||||
input(type="hidden" name="notify_url" value=ipn_url)
|
.row.form-group
|
||||||
label(for="amount") Amount
|
.col-10
|
||||||
input(type="number", name="amount" value="1.00")
|
input.form-control(type="number", name="amount" value="1.00")
|
||||||
select(name="currency_code")
|
.col
|
||||||
|
select.form-control(name="currency_code")
|
||||||
option(value="EUR") EUR
|
option(value="EUR") EUR
|
||||||
option(value="USD") USD
|
option(value="USD") USD
|
||||||
if user
|
if user
|
||||||
input#custominfo(type="hidden", name="custom", value="userid:" + user.id)
|
input#custominfo(type="hidden", name="custom", value="userid:" + user.id)
|
||||||
else
|
else
|
||||||
input#custominfo(type="hidden", name="custom", value="")
|
input#custominfo(type="hidden", name="custom", value="")
|
||||||
if minecraft
|
if minecraft
|
||||||
.check
|
.form-check.form-check-inline
|
||||||
label(for="mcinclude") Include Minecraft Username
|
input.form-check-input(id="mcinclude" type="checkbox" checked="false")
|
||||||
input(id="mcinclude" type="checkbox")
|
label.form-check-label(for="mcinclude") Include Minecraft Username
|
||||||
.mcuname(style="display: none;")
|
.mcuname.form-group(style="display: none;")
|
||||||
input(id="mcusername", autocomplete="off")
|
label(for="mcusername") Minecraft Username
|
||||||
.buttoncont
|
input.form-control(id="mcusername", autocomplete="off")
|
||||||
a.button.donate(name="submit", onclick="$(this).closest('form').submit()")
|
.buttoncont
|
||||||
i.fa.fa-fw.fa-paypal
|
a.btn.btn-primary.text-light(name="submit", onclick="$(this).closest('form').submit()")
|
||||||
|Donate
|
i.fa.fa-fw.fa-paypal
|
||||||
br
|
| Donate
|
||||||
b Currently you can only donate using PayPal.
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
.avatar
|
.avatar
|
||||||
if user.avatar_file
|
if user.avatar_file
|
||||||
img(src="/usercontent/images/" + user.avatar_file)
|
img#userAvatarFile(src="/usercontent/images/" + user.avatar_file)
|
||||||
else
|
else
|
||||||
.noavatar
|
.noavatar
|
||||||
i.fa.fa-fw.fa-user
|
i.fa.fa-fw.fa-user
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
fb:login-button(scope="public_profile,email", onlogin="checkLoginState();" data-max-rows="1", data-size="large", data-button-type="login_with", data-show-faces="false", data-auto-logout-link="false", data-use-continue-as="false")
|
fb:login-button(scope="public_profile,email", onlogin="checkLoginState();" data-max-rows="1", data-size="large", data-button-type="login_with", data-show-faces="false", data-auto-logout-link="false", data-use-continue-as="false")
|
||||||
if google_auth
|
if google_auth
|
||||||
script(src="https://apis.google.com/js/api:client.js")
|
script(src="https://apis.google.com/js/api:client.js")
|
||||||
a.googleLogin
|
a.login-btn.google-login.float-lg-right
|
||||||
i.fa.fa-fw.fa-google
|
i.fa.fa-fw.fa-google
|
||||||
span Log in With Google
|
span Log in With Google
|
||||||
script.
|
script.
|
||||||
@ -35,7 +35,7 @@
|
|||||||
cookiepolicy: 'single_host_origin',
|
cookiepolicy: 'single_host_origin',
|
||||||
fetch_basic_profile: true
|
fetch_basic_profile: true
|
||||||
});
|
});
|
||||||
attachSignin(document.querySelector('.googleLogin'));
|
attachSignin(document.querySelector('.google-login'));
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -60,10 +60,10 @@
|
|||||||
|
|
||||||
startApp()
|
startApp()
|
||||||
if twitter_auth
|
if twitter_auth
|
||||||
a.twitterLogin.loginDiag(href="/api/external/twitter/login")
|
a.login-btn.twitter-login.login-dialog-pop.float-lg-right(href="/api/external/twitter/login")
|
||||||
i.fa.fa-fw.fa-twitter
|
i.fa.fa-fw.fa-twitter
|
||||||
span Log in With Twitter
|
span Log in With Twitter
|
||||||
if discord_auth
|
if discord_auth
|
||||||
a.discordLogin.loginDiag(href="/api/external/discord/login")
|
a.login-btn.discord-login.login-dialog-pop.float-lg-right(href="/api/external/discord/login")
|
||||||
img(src="/static/image/Discord-Logo-White.svg")
|
img(src="/static/image/Discord-Logo-White.svg")
|
||||||
span Log in With Discord
|
span Log in With Discord
|
||||||
|
@ -3,25 +3,46 @@ block title
|
|||||||
|Icy Network
|
|Icy Network
|
||||||
|
|
||||||
block body
|
block body
|
||||||
section#home
|
.carousel.slide#myCarousel(data-ride="carousel")
|
||||||
.content
|
ol.carousel-indicators
|
||||||
h1 Welcome to Icy Network!
|
li.active(data-target="#myCarousel" data-slide-to="0")
|
||||||
p Icy Network is a Global Network of Communities and Websites, United by a Single Login
|
li(data-target="#myCarousel" data-slide-to="1")
|
||||||
.divboxes
|
.carousel-inner
|
||||||
.divbox#secure
|
.carousel-item.active
|
||||||
span.head
|
img.first-slide(src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==", alt="First Slide")
|
||||||
i.fa.fa-lock.fa-fw
|
.container
|
||||||
span.text Secure Login
|
.carousel-caption.text-left
|
||||||
span.text A secure login system with Two-Factor Authentication possibility
|
h1 Welcome to Icy Network
|
||||||
.divbox#secure
|
p Icy Network is a Global Network of Communities and Websites, United by a Single Login
|
||||||
span.head
|
//a.btn.btn-lg.btn-primary(href="#" role="button") Learn More
|
||||||
i.fa.fa-github.fa-fw
|
.carousel-item
|
||||||
span.text Open Source
|
img.second-slide(src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==", alt="Second Slide")
|
||||||
span.text All of our platforms are Open Source Software hosted on our
|
.container
|
||||||
a(href="https://github.com/IcyNet", target="_blank") GitHub Organization
|
.carousel-caption.text-left
|
||||||
section#news
|
h1 Join our Minecraft Server
|
||||||
.content
|
p We have a Minecraft Server up at mc.icynet.eu, join now!
|
||||||
h1 Icy Network News
|
a.carousel-control-prev(href="#myCarousel" role="button" data-slide="prev")
|
||||||
.newsfeed
|
span.carousel-control-prev-icon(aria-hidden="true")
|
||||||
p Please enable JavaScript to view this content.
|
span.sr-only Previous
|
||||||
a.older(href="/news") View all articles
|
a.carousel-control-next(href="#myCarousel" role="button" data-slide="next")
|
||||||
|
span.carousel-control-next-icon(aria-hidden="true")
|
||||||
|
span.sr-only Next
|
||||||
|
.container.marketing
|
||||||
|
.row
|
||||||
|
.col-lg-4
|
||||||
|
span.circular-header.bg-warning
|
||||||
|
i.fa.fa-fw.fa-lock
|
||||||
|
h2 Secure Login
|
||||||
|
p We have a secure login system with the possibility to even further secure your account with Two-Factor Authentication.
|
||||||
|
.col-lg-4
|
||||||
|
span.circular-header.bg-success
|
||||||
|
i.fa.fa-fw.fa-github
|
||||||
|
h2 Open Source
|
||||||
|
p All of our services are Free and Open Source Software (FOSS) hosted on GitHub.
|
||||||
|
p
|
||||||
|
a.btn.btn-secondary(href="https://github.com/IcyNet", target="_blank") Browse Repositories
|
||||||
|
.col-lg-4
|
||||||
|
span.circular-header.bg-info
|
||||||
|
i.fa.fa-fw.fa-users
|
||||||
|
h2 Community-oriented
|
||||||
|
p Our services are made to serve communities. We unite them all with a single login system with support for multiple authentication protocols.
|
||||||
|
115
views/layout.pug
115
views/layout.pug
@ -2,7 +2,7 @@ doctype html
|
|||||||
html
|
html
|
||||||
head
|
head
|
||||||
meta(charset="utf8")
|
meta(charset="utf8")
|
||||||
meta(name="viewport", content="width=device-width, initial-scale=1")
|
meta(name="viewport", content="width=device-width, initial-scale=1, shrink-to-fit=no")
|
||||||
block meta
|
block meta
|
||||||
meta(name="og:title", content="Icy Network")
|
meta(name="og:title", content="Icy Network")
|
||||||
meta(name="og:description", content="Icy Network is a Global Network of Communities and Websites, United by a Single Login")
|
meta(name="og:description", content="Icy Network is a Global Network of Communities and Websites, United by a Single Login")
|
||||||
@ -27,9 +27,8 @@ html
|
|||||||
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
|
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
|
||||||
})();
|
})();
|
||||||
block links
|
block links
|
||||||
|
link(rel="stylesheet", type="text/css", href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css")
|
||||||
link(rel="stylesheet", type="text/css", href="/style/main.css")
|
link(rel="stylesheet", type="text/css", href="/style/main.css")
|
||||||
link(rel="stylesheet", type="text/css", href="/style/footer.css")
|
|
||||||
link(rel="stylesheet", type="text/css", href="//fonts.googleapis.com/css?family=Open+Sans")
|
|
||||||
link(rel="stylesheet", type="text/css", href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css")
|
link(rel="stylesheet", type="text/css", href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css")
|
||||||
script(src="/script/main.js")
|
script(src="/script/main.js")
|
||||||
block cookieconsent
|
block cookieconsent
|
||||||
@ -59,69 +58,53 @@ html
|
|||||||
p Please consider enabling JavaScript for the full experience.
|
p Please consider enabling JavaScript for the full experience.
|
||||||
if matomo
|
if matomo
|
||||||
p
|
p
|
||||||
img(src="#{matomo.track_url}piwik.php?idsite=1&rec=1" style="border:0;" alt="")
|
img.d-inline-block.align-top(src="#{matomo.track_url}piwik.php?idsite=1&rec=1" style="border:0;" alt="")
|
||||||
block banner
|
|
||||||
.banner
|
|
||||||
.logo
|
|
||||||
.part1 Icy
|
|
||||||
.part2 Network
|
|
||||||
block dialog
|
|
||||||
.dialog-drop#dialog
|
|
||||||
.dialog
|
|
||||||
.head
|
|
||||||
#title
|
|
||||||
#close
|
|
||||||
i.fa.fa-fw.fa-times
|
|
||||||
.content#content
|
|
||||||
block nav
|
block nav
|
||||||
.anchor
|
nav.navbar.navbar-expand-lg.navbar-light.bg-light.sticky-top
|
||||||
nav.navigator
|
a.navbar-brand(href="/")
|
||||||
li.hidden#navlogo
|
img(src="/static/image/icynet-icon.svg" width="30" heigth="30")
|
||||||
a(href="/")
|
|Icy Network
|
||||||
.logo.small
|
|
||||||
.part1 Icy
|
button.navbar-toggler(type="button" data-toggle="collapse" data-target="#navCollapse" aria-controls="navCollapse" aria-expanded="false" aria-label="Toggle navigation")
|
||||||
.part2 Network
|
span.navbar-toggler-icon
|
||||||
.menu
|
|
||||||
label.showButton(for="show-menu")
|
.navbar-collapse.collapse#navCollapse
|
||||||
i.fa.fa-fw.fa-bars
|
ul.mr-auto.navbar-nav
|
||||||
input(type="checkbox" id="show-menu")
|
li.nav-item
|
||||||
.list
|
a.nav-link(href="/") Home
|
||||||
ul
|
li.nav-item
|
||||||
li
|
a.nav-link(href="/news") News
|
||||||
a.scroll(href="/#home") Home
|
li.nav-item
|
||||||
li
|
a.nav-link(href="https://forum.icynet.eu/") Forum
|
||||||
a.scroll(href="/#news") News
|
ul.navbar-nav.my-2.my-lg-0
|
||||||
li
|
if user
|
||||||
a(href="https://forum.icynet.eu/") Forum
|
li.nav-item
|
||||||
ul.floating
|
a.nav-link(href="/user/manage") #{user.display_name}
|
||||||
if user
|
li.nav-item
|
||||||
li#user
|
a.nav-link(href="/logout") Log out
|
||||||
a(href="/user/manage") #{user.display_name}
|
else
|
||||||
li
|
li.nav-item
|
||||||
a(href="/logout") Log out
|
a.nav-link(href="/login") Log in
|
||||||
else
|
main(role="main")
|
||||||
li
|
block body
|
||||||
a(href="/login") Log in
|
block footer
|
||||||
block body
|
//FOOTER
|
||||||
block footer
|
footer.container.mb-4
|
||||||
footer
|
p
|
||||||
img.squeebot(src="/static/image/squeebot.svg")
|
|© 2017-2018 Icy Network
|
||||||
span.copyright
|
span.float-sm-right.ml-4
|
||||||
.logo.small
|
a(href="/docs/terms-of-service") Terms
|
||||||
.part1 Icy
|
| ·
|
||||||
.part2 Network
|
a(href="/docs/privacy-policy") Privacy
|
||||||
.social
|
| ·
|
||||||
a.socialbtn#github(href="https://github.com/IcyNet/" target="_blank")
|
a(href="/donate") Donate
|
||||||
|
.d-flex.justify-content-center
|
||||||
|
a.btn-social#github(href="https://github.com/IcyNet/" target="_blank")
|
||||||
i.fa.fa-fw.fa-github
|
i.fa.fa-fw.fa-github
|
||||||
a.socialbtn#twitter(href="https://twitter.com/IcyNet" target="_blank")
|
a.btn-social#twitter(href="https://twitter.com/IcyNet" target="_blank")
|
||||||
i.fa.fa-fw.fa-twitter
|
i.fa.fa-fw.fa-twitter
|
||||||
a.socialbtn#discord(href="https://discord.gg/Xe7MKSx" target="_blank")
|
a.btn-social#discord(href="https://discord.gg/Xe7MKSx" target="_blank")
|
||||||
span.discordlogo
|
span
|
||||||
span © 2018 - Icy Network - Some Rights Reserved
|
a.btn-social#rocket-chat(href="https://chat.icynet.eu" target="_blank")
|
||||||
br
|
span
|
||||||
span
|
|
||||||
a(href="/docs/terms-of-service") Terms of Service
|
|
||||||
span.divider |
|
|
||||||
a(href="/docs/privacy-policy") Privacy Policy
|
|
||||||
span.divider |
|
|
||||||
a(href="/donate") Donate
|
|
||||||
|
@ -24,45 +24,47 @@ block title
|
|||||||
|Icy Network - News - 404
|
|Icy Network - News - 404
|
||||||
|
|
||||||
block body
|
block body
|
||||||
.document
|
.container.mt-4
|
||||||
.content
|
if !article
|
||||||
if !article
|
span.error No such article
|
||||||
span.error No such article
|
else
|
||||||
else
|
nav(aria-label="breadcrumb")
|
||||||
.article
|
ol.breadcrumb
|
||||||
if user && user.privilege && user.privilege > 0 && !editing
|
li.breadcrumb-item
|
||||||
a.button(style="float: right;" href="?edit=1") Edit
|
a(href="/") Home
|
||||||
.title= article.title
|
li.breadcrumb-item
|
||||||
.author Published by
|
a(href="/news") News
|
||||||
span #{article.author.display_name}
|
li.breadcrumb-item.active(aria-current="page")= article.title
|
||||||
|at
|
|
||||||
.timestamp #{new Date(article.created_at)}
|
.news-article
|
||||||
if editing
|
if user && user.privilege && user.privilege > 0 && !editing
|
||||||
.content(contenteditable="true" id="editor1")!= article.content
|
a.btn.btn-primary.float-right(href="?edit=1") Edit
|
||||||
else
|
h1.news-title= article.title
|
||||||
.content!= article.content
|
p.news-meta Published by
|
||||||
if editing
|
span #{article.author.display_name}
|
||||||
.button(id="done") Done editing
|
|at #{new Date(article.created_at)}
|
||||||
br
|
if editing
|
||||||
script.
|
.content(contenteditable="true" id="editor1")!= article.content
|
||||||
CKEDITOR.disableAutoInline = true;
|
else
|
||||||
CKEDITOR.inline('editor1');
|
.content!= article.content
|
||||||
$('#done').click(function (e) {
|
if editing
|
||||||
let data = CKEDITOR.instances.editor1.getData();
|
.btn.btn-success(id="done") Done editing
|
||||||
$.post({
|
br
|
||||||
url: '/api/news/edit/#{article.id}',
|
script.
|
||||||
data: {content: data},
|
CKEDITOR.disableAutoInline = true;
|
||||||
success: function () {
|
CKEDITOR.inline('editor1');
|
||||||
window.location.href = '/news/#{article.id}-#{article.slug}'
|
$('#done').click(function (e) {
|
||||||
},
|
let data = CKEDITOR.instances.editor1.getData();
|
||||||
error: function (e) {
|
$.post({
|
||||||
if (e.responseJSON && e.responseJSON.error) {
|
url: '/api/news/edit/#{article.id}',
|
||||||
alert(e.responseJSON.error);
|
data: {content: data},
|
||||||
}
|
success: function () {
|
||||||
|
window.location.href = '/news/#{article.id}-#{article.slug}'
|
||||||
|
},
|
||||||
|
error: function (e) {
|
||||||
|
if (e.responseJSON && e.responseJSON.error) {
|
||||||
|
alert(e.responseJSON.error);
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
});
|
});
|
||||||
|
});
|
||||||
.return
|
|
||||||
a(href="/news") Back to the news archive
|
|
||||||
|
|
||||||
|
@ -7,25 +7,34 @@ block title
|
|||||||
|Icy Network - News - Compose
|
|Icy Network - News - Compose
|
||||||
|
|
||||||
block body
|
block body
|
||||||
.document
|
.container.mt-4.mb-4
|
||||||
.content
|
nav(aria-label="breadcrumb")
|
||||||
if message.text
|
ol.breadcrumb
|
||||||
if message.error
|
li.breadcrumb-item
|
||||||
.message.error
|
a(href="/") Home
|
||||||
span #{message.text}
|
li.breadcrumb-item
|
||||||
else
|
a(href="/news") News
|
||||||
.message
|
li.breadcrumb-item.active(aria-current="page") Compose
|
||||||
span #{message.text}
|
if message.text
|
||||||
form(action="", method="post")
|
if message.error
|
||||||
input(type="hidden", name="csrf", value=csrf)
|
.alert.alert-danger
|
||||||
|
span #{message.text}
|
||||||
|
else
|
||||||
|
.alert.alert-warning
|
||||||
|
span #{message.text}
|
||||||
|
form(action="", method="post")
|
||||||
|
input(type="hidden", name="csrf", value=csrf)
|
||||||
|
.form-group
|
||||||
label(for="title") Title
|
label(for="title") Title
|
||||||
input(type="text", name="title", id="title", value=formkeep.title)
|
input.form-control(type="text", name="title", id="title", value=formkeep.title, aria-describedby="titleHelp")
|
||||||
|
small.form-text.text-muted#titleHelp Describe your article in a short sentence
|
||||||
|
.form-group
|
||||||
label(for="composer1") Content
|
label(for="composer1") Content
|
||||||
textarea(name="content" id="composer1") #{formkeep.content}
|
textarea.form-control(name="content" id="composer1") #{formkeep.content}
|
||||||
|
.form-group
|
||||||
label(for="tags") Tags
|
label(for="tags") Tags
|
||||||
input(type="text", name="tags", id="tags", value=formkeep.tags)
|
input.form-control(type="text", name="tags", id="tags", value=formkeep.tags)
|
||||||
input(type="submit", value="Submit")
|
button.btn.btn-primary(type="submit") Submit
|
||||||
script.
|
script.
|
||||||
CKEDITOR.replace('composer1')
|
CKEDITOR.replace('composer1')
|
||||||
a(href="/news") Back to news directory
|
|
||||||
|
|
||||||
|
@ -7,33 +7,49 @@ block title
|
|||||||
|Icy Network - News
|
|Icy Network - News
|
||||||
|
|
||||||
block body
|
block body
|
||||||
.document
|
.container.mt-4
|
||||||
.content
|
nav(aria-label="breadcrumb")
|
||||||
if user && user.privilege && user.privilege > 0
|
ol.breadcrumb
|
||||||
a.button(style="float: right;" href="/news/compose") New Article
|
li.breadcrumb-item
|
||||||
h1 Icy Network News Archive
|
a(href="/") Home
|
||||||
if news.error
|
li.breadcrumb-item.active(aria-current="page") News
|
||||||
span.error There are no articles to show.
|
|
||||||
else
|
if user && user.privilege && user.privilege > 0
|
||||||
if news.page
|
a.btn.btn-light.float-right(href="/news/compose") New Article
|
||||||
span.pagenum
|
h1.pb-3.mb-4.border-bottom Icy Network News
|
||||||
|Page #{news.page.page} of #{news.page.pages}
|
if news.error
|
||||||
.pgn
|
span.error There are no articles to show.
|
||||||
|
else
|
||||||
|
if news.page
|
||||||
|
nav(aria-label="pagination")
|
||||||
|
ul.pagination
|
||||||
if news.page.page > 1
|
if news.page.page > 1
|
||||||
a.button(href="/news/?page=" + (news.page.page - 1)) Previous
|
li.page-item
|
||||||
|
a.page-link(href="/news/?page=" + (news.page.page - 1)) Previous
|
||||||
|
else
|
||||||
|
li.page-item.disabled
|
||||||
|
a.page-link(href="#" tabindex="-1") Previous
|
||||||
- var n = 0
|
- var n = 0
|
||||||
while n < news.page.pages
|
while n < news.page.pages
|
||||||
a.button(href="/news/?page=" + (n + 1))= n + 1
|
- var current = n + 1 == news.page.page
|
||||||
|
li.page-item(class=(current ? 'active' : ''))
|
||||||
|
a.page-link(href="/news/?page=" + (n + 1))= n + 1
|
||||||
|
if current
|
||||||
|
span.sr-only (current)
|
||||||
- n++
|
- n++
|
||||||
if news.page.pages > news.page.page
|
if news.page.pages > news.page.page
|
||||||
a.button(href="/news/?page=" + (news.page.page + 1)) Next
|
li.page-item
|
||||||
each val in news.articles
|
a.page-link(href="/news/?page=" + (news.page.page + 1)) Next
|
||||||
.article
|
else
|
||||||
a.title(href="/news/" + val.id + "-" + val.slug)= val.title
|
li.page-item.disabled
|
||||||
.author Published by
|
a.page-link(href="#" tabindex="-1") Next
|
||||||
span #{val.author.display_name}
|
each val in news.articles
|
||||||
|at
|
.news-article
|
||||||
.timestamp #{new Date(val.created_at)}
|
h2.news-title
|
||||||
.content!= val.content
|
a(href="/news/" + val.id + "-" + val.slug)= val.title
|
||||||
hr
|
p.news-meta Published by
|
||||||
|
span #{val.author.display_name}
|
||||||
|
|at #{new Date(val.created_at)}
|
||||||
|
.content!= val.content
|
||||||
|
hr
|
||||||
|
|
||||||
|
@ -3,13 +3,11 @@ block title
|
|||||||
|Icy Network - Redirecting
|
|Icy Network - Redirecting
|
||||||
|
|
||||||
block body
|
block body
|
||||||
.wrapper
|
.container
|
||||||
.boxcont
|
h1 Redirecting
|
||||||
.box#totpcheck
|
p Please wait..
|
||||||
h1 Redirecting
|
script.
|
||||||
p Please wait..
|
window.close()
|
||||||
script.
|
setTimeout(function () {
|
||||||
window.close()
|
window.location.href = '#{url}'
|
||||||
setTimeout(function () {
|
}, 1000)
|
||||||
window.location.href = '#{url}'
|
|
||||||
}, 1000)
|
|
||||||
|
@ -3,26 +3,27 @@ block title
|
|||||||
|Icy Network - Banned Account
|
|Icy Network - Banned Account
|
||||||
|
|
||||||
block body
|
block body
|
||||||
.wrapper
|
.container.mt-4.mb-4
|
||||||
.boxcont
|
if ipban
|
||||||
.box#login
|
h1 This IP Address is banned from accessing Icy Network
|
||||||
if ipban
|
else
|
||||||
h1 This IP Address is BANNED!
|
h1 This user is banned from accessing Icy Network.
|
||||||
else
|
p This user currently has #{bans.length} ban(s) active.
|
||||||
h1 This User is BANNED!
|
each ban in bans
|
||||||
p This user currently has #{bans.length} ban(s) active
|
.ban.alert.alert-danger
|
||||||
each ban in bans
|
p
|
||||||
.message.error.ban
|
b Banned at
|
||||||
label Banned
|
.date #{new Date(ban.banned)}
|
||||||
.date #{new Date(ban.banned)}
|
p
|
||||||
label Reason
|
b Reason
|
||||||
.reason #{ban.reason}
|
.reason #{ban.reason}
|
||||||
label Expires at
|
p
|
||||||
.expiry
|
b Expires at
|
||||||
if !ban.expiry
|
.expiry
|
||||||
b This ban is permanent.
|
|
||||||
else
|
|
||||||
|#{new Date(ban.expiry)}
|
|
||||||
if !ban.expiry
|
if !ban.expiry
|
||||||
b This ban cannot be appealed.
|
b This ban is permanent.
|
||||||
|
else
|
||||||
|
|#{new Date(ban.expiry)}
|
||||||
|
if !ban.expiry
|
||||||
|
b This ban cannot be appealed.
|
||||||
|
|
||||||
|
@ -3,27 +3,34 @@ block title
|
|||||||
|Icy Network - Change User Email
|
|Icy Network - Change User Email
|
||||||
|
|
||||||
block body
|
block body
|
||||||
.wrapper
|
.container.mt-4.mb-4
|
||||||
.boxcont
|
nav(aria-label="breadcrumb")
|
||||||
.box#totpcheck
|
ol.breadcrumb
|
||||||
h1 Change Your Email
|
li.breadcrumb-item
|
||||||
if message.text
|
a(href="/") Home
|
||||||
if message.error
|
li.breadcrumb-item
|
||||||
.message.error
|
a(href="/user/manage") User Settings
|
||||||
span #{message.text}
|
li.breadcrumb-item.active(aria-current="page") Change Email Address
|
||||||
else
|
h1 Change Your Email Address
|
||||||
.message
|
if message.text
|
||||||
span #{message.text}
|
if message.error
|
||||||
form#loginForm(method="POST", action="")
|
.alert.alert-danger
|
||||||
input(type="hidden", name="csrf", value=csrf)
|
span #{message.text}
|
||||||
if email
|
else
|
||||||
label(for="email") Current Email Address
|
.alert.alert-success
|
||||||
small Email Hint: #{email}
|
span #{message.text}
|
||||||
br
|
form#loginForm(method="POST", action="")
|
||||||
input(type="email", name="email", id="email")
|
input(type="hidden", name="csrf", value=csrf)
|
||||||
label(for="email_new") New Email Address
|
if email
|
||||||
input(type="email", name="email_new", id="email_new")
|
.form-group
|
||||||
if password
|
label(for="email") Current Email Address
|
||||||
label(for="password") Password
|
input.form-control(type="email", name="email", id="email")
|
||||||
input(type="password", name="password", id="password")
|
small Email Hint: #{email}
|
||||||
input(type="submit", value="Change")
|
.form-group
|
||||||
|
label(for="email_new") New Email Address
|
||||||
|
input.form-control(type="email", name="email_new", id="email_new")
|
||||||
|
if password
|
||||||
|
.form-group
|
||||||
|
label(for="password") Password
|
||||||
|
input.form-control(type="password", name="password", id="password")
|
||||||
|
button.btn.btn-primary(type="submit") Done
|
||||||
|
@ -3,27 +3,28 @@ block title
|
|||||||
|Icy Network - Log In
|
|Icy Network - Log In
|
||||||
|
|
||||||
block body
|
block body
|
||||||
.wrapper
|
.container.mb-4.mt-4
|
||||||
.boxcont
|
h1 Log in
|
||||||
.box#login
|
.row
|
||||||
h1 Log in
|
.col-sm-8
|
||||||
.left
|
if message.text
|
||||||
if message.text
|
if message.error
|
||||||
if message.error
|
.alert.alert-danger
|
||||||
.message.error
|
span #{message.text}
|
||||||
span #{message.text}
|
else
|
||||||
else
|
.alert.alert-success
|
||||||
.message
|
span #{message.text}
|
||||||
span #{message.text}
|
form#loginForm(method="POST", action="")
|
||||||
form#loginForm(method="POST", action="")
|
input(type="hidden", name="csrf", value=csrf)
|
||||||
input(type="hidden", name="csrf", value=csrf)
|
.form-group
|
||||||
label(for="username") Username or Email Address
|
label(for="username") Username or Email Address
|
||||||
input(type="text", name="username", id="username")
|
input.form-control(type="text", name="username", id="username")
|
||||||
|
.form-group
|
||||||
label(for="password") Password
|
label(for="password") Password
|
||||||
input(type="password", name="password", id="password")
|
input.form-control(type="password", name="password", id="password")
|
||||||
input(type="submit", value="Log in")
|
button.btn.btn-primary(type="submit") Log in
|
||||||
a#create(href="/register") Create an account
|
a(href="/register") Create an account
|
||||||
span.divider ·
|
| ·
|
||||||
a#create(href="/login/reset") Forgot password?
|
a(href="/login/reset") Forgot password?
|
||||||
.right
|
aside.col-sm-4
|
||||||
include ../includes/external.pug
|
include ../includes/external.pug
|
||||||
|
@ -1,29 +1,37 @@
|
|||||||
.rel.cropbox
|
.rel.cropbox
|
||||||
link(rel="stylesheet", type="text/css", href="https://cdnjs.cloudflare.com/ajax/libs/cropper/2.3.4/cropper.min.css")
|
.row#fileChoose
|
||||||
script(src="https://cdnjs.cloudflare.com/ajax/libs/cropper/2.3.4/cropper.min.js")
|
.col
|
||||||
.otherdata
|
h3 Current Avatar
|
||||||
h3 Current Avatar
|
.avatar
|
||||||
.avatar
|
include ../../includes/avatar.pug
|
||||||
include ../../includes/avatar.pug
|
.col
|
||||||
.inputting
|
.alert.alert-danger#avatarAlert(style="display: none")
|
||||||
h3 Upload new
|
form
|
||||||
.message.error
|
.form-check
|
||||||
small Max filesize: 1 MB, only .png and .jpg allowed
|
input.form-check-input#uploadType(type="radio", name="avi", checked)
|
||||||
br
|
label(for="#uploadType") Upload Image
|
||||||
input(type="file", id="fileinput")
|
.form-group.ml-5
|
||||||
.editor(style="display: none")
|
label(for="#fileinput") Choose File
|
||||||
h3 Crop the image
|
input.form-control-file#fileinput(type="file", aria-labelledby="#maxFileText")
|
||||||
img.preview(id="image")
|
small#maxFileText Max file size: 5 MB, only .png and .jpg allowed
|
||||||
.buttons
|
.form-check
|
||||||
.button#done Done
|
.row
|
||||||
.button#cancel Cancel
|
.col
|
||||||
.button#upload Upload Now
|
input.form-check-input#gravType(type="radio", name="avi")
|
||||||
|
label(for="#gravType") Use
|
||||||
|
a(href="https://en.gravatar.com/", target="_blank") Gravatar
|
||||||
|
.col
|
||||||
|
img#gravatarPic
|
||||||
|
|
||||||
|
.content#crop(style="display: none;")
|
||||||
|
h3 Crop the Image
|
||||||
|
.alert.alert-info#cropAlert(style="display: none;") Uploading..
|
||||||
|
img.preview#imageCropTag
|
||||||
|
|
||||||
script.
|
script.
|
||||||
window.jQuery = $
|
function failAlert (msg) {
|
||||||
function message (msg) {
|
$('#avatarAlert').text(msg)
|
||||||
$('.message').text(msg)
|
$('#avatarAlert').show()
|
||||||
$('.message').show()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function dataURItoBlob (dataURI) {
|
function dataURItoBlob (dataURI) {
|
||||||
@ -51,20 +59,21 @@ script.
|
|||||||
}
|
}
|
||||||
|
|
||||||
function cropReady() {
|
function cropReady() {
|
||||||
let cropargs = $('#image').cropper('getData')
|
let cropargs = $('#imageCropTag').cropper('getData')
|
||||||
let cropimage = $('#image').cropper('getCroppedCanvas')
|
let cropimage = $('#imageCropTag').cropper('getCroppedCanvas')
|
||||||
|
|
||||||
$('#upload').show()
|
$('#btnUpload').show()
|
||||||
$('#done').hide()
|
$('#btnDone').hide()
|
||||||
$('.preview').attr('src', cropimage.toDataURL())
|
$('#imageCropTag').attr('src', cropimage.toDataURL())
|
||||||
$('.preview').show()
|
$('#imageCropTag').show()
|
||||||
$('#image').cropper('destroy')
|
$('#imageCropTag').cropper('destroy')
|
||||||
|
|
||||||
let called = false
|
let called = false
|
||||||
$('#upload').click(function (e) {
|
$('#btnUpload').click(function (e) {
|
||||||
if (called) return
|
if (called) return
|
||||||
called = true
|
called = true
|
||||||
$('#upload').hide()
|
$('#btnUpload').hide()
|
||||||
|
$('#cropAlert').show()
|
||||||
let formData = new FormData()
|
let formData = new FormData()
|
||||||
formData.append('image', dataURItoBlob(fr.result))
|
formData.append('image', dataURItoBlob(fr.result))
|
||||||
|
|
||||||
@ -79,14 +88,14 @@ script.
|
|||||||
processData: false,
|
processData: false,
|
||||||
contentType: false,
|
contentType: false,
|
||||||
success: function (data) {
|
success: function (data) {
|
||||||
window.Dialog.close()
|
$('avatarModal').modal('hide')
|
||||||
window.location.reload()
|
window.location.reload()
|
||||||
},
|
},
|
||||||
error: function (err) {
|
error: function (err) {
|
||||||
if (err.responseJSON && err.responseJSON.error) {
|
if (err.responseJSON && err.responseJSON.error) {
|
||||||
message(err.responseJSON.error)
|
failAlert(err.responseJSON.error)
|
||||||
}
|
}
|
||||||
$('#cancel').click()
|
cancel()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -96,20 +105,19 @@ script.
|
|||||||
let match = blob.match(/data:image\/(\w+);/)
|
let match = blob.match(/data:image\/(\w+);/)
|
||||||
let screenlen = $('.mobview').is(':visible')
|
let screenlen = $('.mobview').is(':visible')
|
||||||
if (!match) {
|
if (!match) {
|
||||||
return message('Not an image file!')
|
return failAlert('Not an image file!')
|
||||||
}
|
}
|
||||||
|
|
||||||
if (match[1] !== 'png' && match[1] !== 'jpg' && match[1] !== 'jpeg') {
|
if (match[1] !== 'png' && match[1] !== 'jpg' && match[1] !== 'jpeg') {
|
||||||
return message('Unsupported image file')
|
return failAlert('Unsupported image file')
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#image').attr('src', fr.result).hide()
|
$('#imageCropTag').attr('src', fr.result).hide()
|
||||||
$('.inputting').hide()
|
$('#fileChoose').hide()
|
||||||
$('.otherdata').hide()
|
$('#btnUpload').hide()
|
||||||
$('#upload').hide()
|
$('#btnDone').show()
|
||||||
$('#done').show()
|
$('#crop').show()
|
||||||
$('.editor').show()
|
$('#imageCropTag').cropper({
|
||||||
$('#image').cropper({
|
|
||||||
aspectRatio: 1 / 1,
|
aspectRatio: 1 / 1,
|
||||||
minContainerHeight: screenlen ? 128 : 512,
|
minContainerHeight: screenlen ? 128 : 512,
|
||||||
minContainerWidth: screenlen ? 128 : 512,
|
minContainerWidth: screenlen ? 128 : 512,
|
||||||
@ -117,44 +125,86 @@ script.
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function gravatarDance() {
|
||||||
|
$.ajax({
|
||||||
|
type: 'GET',
|
||||||
|
url: '/api/avatar/gravatar',
|
||||||
|
success: function (ln) {
|
||||||
|
if ($('#userAvatarFile').length) {
|
||||||
|
var ufile = $('#userAvatarFile').attr('src')
|
||||||
|
if (ufile.indexOf('/GRAV-') !== -1) {
|
||||||
|
$('#gravType').prop('checked', true)
|
||||||
|
} else {
|
||||||
|
$('#uploadType').prop('checked', true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$('#gravatarPic').attr('src', ln)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
$('#gravType').click(function (e) {
|
||||||
|
$.ajax({
|
||||||
|
type: 'POST',
|
||||||
|
url: '/api/avatar/gravatar',
|
||||||
|
success: function () {
|
||||||
|
window.location.reload()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function cancel() {
|
||||||
|
$('#fileChoose').show()
|
||||||
|
$('#cropAlert').hide()
|
||||||
|
$('#btnDone').hide()
|
||||||
|
$('#btnUpload').hide()
|
||||||
|
$('#crop').hide()
|
||||||
|
$('#imageCropTag').cropper('destroy')
|
||||||
|
fr = null
|
||||||
|
}
|
||||||
|
|
||||||
function handleFileSelect() {
|
function handleFileSelect() {
|
||||||
if (!window.File || !window.FileReader || !window.FileList || !window.Blob) {
|
if (!window.File || !window.FileReader || !window.FileList || !window.Blob) {
|
||||||
return message('The File APIs are not fully supported in this browser.')
|
return failAlert('The File APIs are not fully supported in this browser.')
|
||||||
}
|
}
|
||||||
|
|
||||||
let input = document.getElementById('fileinput')
|
let input = document.getElementById('fileinput')
|
||||||
if (!input.files) {
|
if (!input.files) {
|
||||||
message('This browser doesn\'t seem to support the `files` property of file inputs.')
|
return failAlert('This browser doesn\'t seem to support the `files` property of file inputs.')
|
||||||
} else if (!input.files[0]) {
|
|
||||||
message('Please select a file.')
|
|
||||||
} else if (input.files[0].size > 1000000) {
|
|
||||||
message('This file is too big. Max: 1 MB')
|
|
||||||
} else {
|
|
||||||
file = input.files[0]
|
|
||||||
fr = new FileReader()
|
|
||||||
fr.readAsDataURL(file)
|
|
||||||
fr.addEventListener('load', function (e) {
|
|
||||||
ready(fr.result)
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!input.files[0]) {
|
||||||
|
return failAlert('Please select a file.')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (input.files[0].size > 5000000) {
|
||||||
|
return failAlert('This file is too big. Max: 5 MB')
|
||||||
|
}
|
||||||
|
|
||||||
|
file = input.files[0]
|
||||||
|
fr = new FileReader()
|
||||||
|
fr.readAsDataURL(file)
|
||||||
|
fr.addEventListener('load', function (e) {
|
||||||
|
ready(fr.result)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#fileinput').on('change', function (e) {
|
$(window).ready(function () {
|
||||||
e.preventDefault()
|
$('#avatarModal').on('hidden.bs.modal', function (e) {
|
||||||
handleFileSelect()
|
cancel()
|
||||||
|
})
|
||||||
|
|
||||||
|
$('#avatarModal').on('show.bs.modal', function (e) {
|
||||||
|
gravatarDance()
|
||||||
|
})
|
||||||
|
|
||||||
|
$('#fileinput').on('change', function (e) {
|
||||||
|
e.preventDefault()
|
||||||
|
handleFileSelect()
|
||||||
|
})
|
||||||
|
|
||||||
|
$('#btnDone').click(function (e) {
|
||||||
|
cropReady()
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
$('#cancel').click(function (e) {
|
|
||||||
$('.inputting').show()
|
|
||||||
$('.otherdata').show()
|
|
||||||
$('.editor').hide()
|
|
||||||
$('#image').cropper('destroy')
|
|
||||||
})
|
|
||||||
|
|
||||||
$('#done').click(function (e) {
|
|
||||||
cropReady()
|
|
||||||
})
|
|
||||||
|
|
||||||
$('.message').hide()
|
|
||||||
|
|
||||||
|
@ -3,20 +3,19 @@ block title
|
|||||||
|Icy Network - Password Required
|
|Icy Network - Password Required
|
||||||
|
|
||||||
block body
|
block body
|
||||||
.wrapper
|
.container.mt-4.mb-4
|
||||||
.boxcont
|
h1 Enter your password
|
||||||
.box#totpcheck
|
p This action requires your password to continue
|
||||||
h1 Enter your password
|
if message.text
|
||||||
small.descr This action requires your password to continue
|
if message.error
|
||||||
if message.text
|
.alert.alert-danger
|
||||||
if message.error
|
span #{message.text}
|
||||||
.message.error
|
else
|
||||||
span #{message.text}
|
.alert.alert-warning
|
||||||
else
|
span #{message.text}
|
||||||
.message
|
form#loginForm(method="POST", action=post)
|
||||||
span #{message.text}
|
input(type="hidden", name="csrf", value=csrf)
|
||||||
form#loginForm(method="POST", action=post)
|
.form-group
|
||||||
input(type="hidden", name="csrf", value=csrf)
|
label(for="password") Password
|
||||||
label(for="password") Password
|
input.form-control#password(type="password", name="password")
|
||||||
input(type="password", name="password", id="password")
|
button.btn.btn-primary(type="submit") Continue
|
||||||
input(type="submit", value="Continue")
|
|
||||||
|
@ -3,25 +3,34 @@ block title
|
|||||||
|Icy Network - Change User Password
|
|Icy Network - Change User Password
|
||||||
|
|
||||||
block body
|
block body
|
||||||
.wrapper
|
.container.mt-4.mb-4
|
||||||
.boxcont
|
if user
|
||||||
.box#totpcheck
|
nav(aria-label="breadcrumb")
|
||||||
h1 Change Your Password
|
ol.breadcrumb
|
||||||
if message.text
|
li.breadcrumb-item
|
||||||
if message.error
|
a(href="/") Home
|
||||||
.message.error
|
li.breadcrumb-item
|
||||||
span #{message.text}
|
a(href="/user/manage") User Settings
|
||||||
else
|
li.breadcrumb-item.active(aria-current="page") Change Password
|
||||||
.message
|
h1 Change Your Password
|
||||||
span #{message.text}
|
if message.text
|
||||||
form#loginForm(method="POST", action="")
|
if message.error
|
||||||
input(type="hidden", name="csrf", value=csrf)
|
.alert.alert-danger
|
||||||
if !token
|
span #{message.text}
|
||||||
label(for="password_old") Current Password
|
else
|
||||||
input(type="password", name="password_old", id="password_old")
|
.alert.alert-success
|
||||||
label(for="password") New Password
|
span #{message.text}
|
||||||
input(type="password", name="password", id="password")
|
form#loginForm(method="POST", action="")
|
||||||
label(for="password_repeat") Repeat New Password
|
input(type="hidden", name="csrf", value=csrf)
|
||||||
input(type="password", name="password_repeat", id="password_repeat", autocomplete="off")
|
if !token
|
||||||
div#repeatcheck(style="display: none")
|
.form-group
|
||||||
input(type="submit", value="Change")
|
label(for="password_old") Current Password
|
||||||
|
input.form-control#password_old(type="password", name="password_old")
|
||||||
|
.form-group
|
||||||
|
label(for="password") New Password
|
||||||
|
input.form-control#password(type="password", name="password")
|
||||||
|
.form-group
|
||||||
|
label(for="password_repeat") Repeat New Password
|
||||||
|
input.form-control#password_repeat(type="password", name="password_repeat", autocomplete="off")
|
||||||
|
small#repeatcheck(style="display: none")
|
||||||
|
button.btn.btn-primary(type="submit") Change
|
||||||
|
@ -3,35 +3,41 @@ block title
|
|||||||
|Icy Network - Register
|
|Icy Network - Register
|
||||||
|
|
||||||
block body
|
block body
|
||||||
.wrapper
|
.container.mb-4.mt-4
|
||||||
.boxcont
|
h1 Create a new account
|
||||||
.box#login
|
if message.text
|
||||||
h1 Create a new account
|
if message.error
|
||||||
.left
|
.alert.alert-danger
|
||||||
if message.text
|
span #{message.text}
|
||||||
if message.error
|
else
|
||||||
.message.error
|
.alert.alert-success
|
||||||
span #{message.text}
|
span #{message.text}
|
||||||
else
|
form#loginForm(method="POST", action="")
|
||||||
.message
|
input(type="hidden", name="csrf", value=csrf)
|
||||||
span #{message.text}
|
.form-group
|
||||||
form#loginForm(method="POST", action="")
|
label(for="username") Username
|
||||||
input(type="hidden", name="csrf", value=csrf)
|
input.form-control#username(type="text", name="username", value=formkeep.username, aria-labelledby="usernameText")
|
||||||
label(for="username") Username
|
small#usernameText English characters, numbers and -_ only.
|
||||||
input(type="text", name="username", id="username", value=formkeep.username)
|
.form-group
|
||||||
label(for="display_name") Display Name
|
label(for="display_name") Display Name
|
||||||
input(type="text", name="display_name", id="display_name", value=formkeep.display_name)
|
input.form-control#display_name(type="text", name="display_name", value=formkeep.display_name, aria-labelledby="display_nameText")
|
||||||
label(for="email") Email Address
|
small#display_nameText The name displayed on your public profiles.
|
||||||
input(type="email", name="email", id="email", value=formkeep.email)
|
.form-group
|
||||||
label(for="password") Password
|
label(for="email") Email Address
|
||||||
input(type="password", name="password", id="password")
|
input.form-control#email(type="email", name="email", value=formkeep.email)
|
||||||
label(for="password_repeat") Repeat Password
|
.form-group
|
||||||
input(type="password", name="password_repeat", id="password_repeat", autocomplete="off")
|
label(for="password") Password
|
||||||
div#repeatcheck(style="display: none")
|
input.form-control#password(type="password", name="password", aria-labelledby="passwordText")
|
||||||
if recaptcha
|
small#passwordText 8 characters minimum.
|
||||||
script(src='https://www.google.com/recaptcha/api.js')
|
.form-group
|
||||||
.g-recaptcha(data-sitekey=recaptcha)
|
label(for="password_repeat") Repeat Password
|
||||||
input(type="submit", value="Register")
|
input.form-control#password_repeat(type="password", name="password_repeat", autocomplete="off")
|
||||||
a#create(href="/login") Log in with an existing account
|
small#repeatcheck(style="display: none")
|
||||||
.right
|
if recaptcha
|
||||||
include ../includes/external.pug
|
.form-group
|
||||||
|
label Captcha
|
||||||
|
script(src='https://www.google.com/recaptcha/api.js')
|
||||||
|
.g-recaptcha(data-sitekey=recaptcha)
|
||||||
|
button.btn.btn-primary(type="submit") Register
|
||||||
|
| or
|
||||||
|
a(href="/login") log in with an existing account
|
||||||
|
@ -3,21 +3,20 @@ block title
|
|||||||
|Icy Network - Reset Password
|
|Icy Network - Reset Password
|
||||||
|
|
||||||
block body
|
block body
|
||||||
.wrapper
|
.container.mt-4.mb-4
|
||||||
.boxcont
|
h1 Reset your password
|
||||||
.box#totpcheck
|
p Enter your email below in order to reset your password.
|
||||||
h1 Reset your password
|
if message.text
|
||||||
p Enter your email below in order to reset your password.
|
if message.error
|
||||||
if message.text
|
.alert.alert-danger
|
||||||
if message.error
|
span #{message.text}
|
||||||
.message.error
|
else
|
||||||
span #{message.text}
|
.alert.alert-info
|
||||||
else
|
span #{message.text}
|
||||||
.message
|
if !sent
|
||||||
span #{message.text}
|
form#loginForm(method="POST", action=post)
|
||||||
if !sent
|
input(type="hidden", name="csrf", value=csrf)
|
||||||
form#loginForm(method="POST", action=post)
|
.form-group
|
||||||
input(type="hidden", name="csrf", value=csrf)
|
label(for="email") Email Address
|
||||||
label(for="email") Email Address
|
input.form-control#email(type="email", name="email")
|
||||||
input(type="email", name="email", id="email")
|
button.btn.btn-primary(type="submit") Continue
|
||||||
input(type="submit", value="Continue")
|
|
||||||
|
@ -2,71 +2,104 @@ extends ../layout.pug
|
|||||||
block title
|
block title
|
||||||
|Icy Network - User Settings
|
|Icy Network - User Settings
|
||||||
|
|
||||||
|
block append links
|
||||||
|
link(rel="stylesheet", type="text/css", href="https://cdnjs.cloudflare.com/ajax/libs/cropper/2.3.4/cropper.min.css")
|
||||||
|
script(src="https://cdnjs.cloudflare.com/ajax/libs/cropper/2.3.4/cropper.min.js")
|
||||||
|
|
||||||
block body
|
block body
|
||||||
.wrapper
|
.container.mt-4.mb-4
|
||||||
.boxcont
|
nav(aria-label="breadcrumb")
|
||||||
.box#settings
|
ol.breadcrumb
|
||||||
h1 User Settings
|
li.breadcrumb-item
|
||||||
.left
|
a(href="/") Home
|
||||||
if message.text
|
li.breadcrumb-item.active(aria-current="page") User Settings
|
||||||
if message.error
|
h1 User Settings
|
||||||
.message.error
|
.modal.fade#avatarModal(tabindex="-1", role="dialog", aria-labelledby="avatarModalTitle", aria-hidden="true")
|
||||||
span #{message.text}
|
.modal-dialog.modal-lg(role="document")
|
||||||
else
|
.modal-content
|
||||||
.message
|
.modal-header
|
||||||
span #{message.text}
|
h5.modal-title#avatarModalTitle Change Avatar
|
||||||
form#loginForm(method="POST", action="")
|
button.close(type="button", data-dismiss="modal", aria-label="Close")
|
||||||
input(type="hidden", name="csrf", value=csrf)
|
span(aria-hidden="true") ×
|
||||||
label(for="username") Username
|
.modal-body
|
||||||
input(type="text", name="username", id="username", value=user.username, disabled)
|
include partials/avatar.pug
|
||||||
label(for="display_name") Display Name
|
.modal-footer
|
||||||
input(type="text", name="display_name", id="display_name", value=user.display_name)
|
button.btn.btn-secondary(type="button", data-dismiss="modal") Close
|
||||||
label Avatar
|
button.btn.btn-primary#btnDone(type="button", style="display: none;") Done
|
||||||
.avatarCont
|
button.btn.btn-primary#btnUpload(type="button", style="display: none;") Upload
|
||||||
include ../includes/avatar.pug
|
.row
|
||||||
.options
|
.col-3
|
||||||
a#newAvatar(href='#') Change Avatar
|
.nav.flex-column.nav-pills#v-pills-tab(role="tablist", aria-orientation="vertical")
|
||||||
if user.avatar_file
|
a.nav-link.active#v-pills-main-tab(data-toggle="tab", href="#v-pills-main", role="tab", aria-control="v-pills-main", aria-selected="true") General Settings
|
||||||
a#removeAvatar(href='#') Remove Avatar
|
a.nav-link#v-pills-social-tab(data-toggle="tab", href="#v-pills-social", role="tab", aria-control="v-pills-social", aria-selected="false") Social Accounts
|
||||||
input(type="submit", value="Save Settings")
|
a.nav-link#v-pills-oauth2-tab(data-toggle="tab", href="#v-pills-oauth2", role="tab", aria-control="v-pills-oauth2", aria-selected="false") Authorizations
|
||||||
.right
|
a.nav-link#v-pills-actions-tab(data-toggle="tab", href="#v-pills-actions", role="tab", aria-control="v-pills-actions", aria-selected="false") Account Actions
|
||||||
h3 Social Media Accounts
|
.col-9
|
||||||
.specify(title="You can add social media accounts to your account for ease of login. Once added, logging in from linked sources logs you into this account automatically.") ?
|
.tab-content#v-pills-tabContent
|
||||||
include ../includes/external.pug
|
.tab-pane.fade.show.active#v-pills-main(role="tabpanel", aria-labelledby="v-pills-main")
|
||||||
if google_auth == false
|
h2 General Settings
|
||||||
a.option.accdisconnect(href="/api/external/google/remove")
|
if message.text
|
||||||
i.fa.fa-fw.fa-times
|
if message.error
|
||||||
|Unlink Google
|
.alert.alert-danger
|
||||||
if twitter_auth == false
|
span #{message.text}
|
||||||
a.option.accdisconnect(href="/api/external/twitter/remove")
|
else
|
||||||
i.fa.fa-fw.fa-times
|
.alert.alert-success
|
||||||
|Unlink Twitter
|
span #{message.text}
|
||||||
if facebook_auth == false
|
form#loginForm(method="POST", action="")
|
||||||
a.option.accdisconnect(href="/api/external/facebook/remove")
|
input(type="hidden", name="csrf", value=csrf)
|
||||||
i.fa.fa-fw.fa-times
|
.form-group
|
||||||
|Unlink Facebook
|
label(for="username") Username
|
||||||
if discord_auth == false
|
input.form-control(type="text", name="username", id="username", value=user.username, disabled)
|
||||||
a.option.accdisconnect(href="/api/external/discord/remove")
|
.form-group
|
||||||
i.fa.fa-fw.fa-times
|
label(for="display_name") Display Name
|
||||||
|Unlink Discord
|
input.form-control(type="text", name="display_name", id="display_name", value=user.display_name)
|
||||||
h3 Other Options
|
label Avatar
|
||||||
if password
|
.avatarCont
|
||||||
a.option(href="/user/manage/password")
|
include ../includes/avatar.pug
|
||||||
i.fa.fa-fw.fa-lock
|
.options
|
||||||
|Change Password
|
a(data-toggle="modal", data-target="#avatarModal" href='#') Change Avatar
|
||||||
if totp
|
if user.avatar_file
|
||||||
a.option(href="/user/two-factor/disable")
|
a#removeAvatar(href='#') Remove Avatar
|
||||||
|
button.btn.btn-primary(type="submit") Save Settings
|
||||||
|
.tab-pane.fade#v-pills-social(role="tabpanel", aria-labelledby="v-pills-social")
|
||||||
|
h3 Social Media Accounts
|
||||||
|
p You can add social media accounts to your account for ease of login. Once added, logging in from linked sources logs you into this account automatically.
|
||||||
|
include ../includes/external.pug
|
||||||
|
if google_auth == false
|
||||||
|
a.option.disconnect.login-btn.float-lg-right(href="/api/external/google/remove")
|
||||||
|
i.fa.fa-fw.fa-times
|
||||||
|
|Unlink Google
|
||||||
|
if twitter_auth == false
|
||||||
|
a.option.disconnect.login-btn.float-lg-right(href="/api/external/twitter/remove")
|
||||||
|
i.fa.fa-fw.fa-times
|
||||||
|
|Unlink Twitter
|
||||||
|
if facebook_auth == false
|
||||||
|
a.option.disconnect.login-btn.float-lg-right(href="/api/external/facebook/remove")
|
||||||
|
i.fa.fa-fw.fa-times
|
||||||
|
|Unlink Facebook
|
||||||
|
if discord_auth == false
|
||||||
|
a.option.disconnect.login-btn.float-lg-right(href="/api/external/discord/remove")
|
||||||
|
i.fa.fa-fw.fa-times
|
||||||
|
|Unlink Discord
|
||||||
|
.tab-pane.fade#v-pills-oauth2(role="tabpanel", aria-labelledby="v-pills-oauth2")
|
||||||
|
h2 Authorized Applications
|
||||||
|
p Applications which have access to basic user information. You may restrict access at any time by pressing the red icon on the top right of the application card.
|
||||||
|
.cl#clientlist
|
||||||
|
p Please enable JavaScript to view this content.
|
||||||
|
.tab-pane.fade#v-pills-actions(role="tabpanel", aria-labelledby="v-pills-actions")
|
||||||
|
h3 Account Actions
|
||||||
|
if password
|
||||||
|
a.option(href="/user/manage/password")
|
||||||
i.fa.fa-fw.fa-lock
|
i.fa.fa-fw.fa-lock
|
||||||
|Disable Two-Factor Authentication
|
|Change Password
|
||||||
else
|
if totp
|
||||||
a.option(href="/user/two-factor")
|
a.option(href="/user/two-factor/disable")
|
||||||
i.fa.fa-fw.fa-lock
|
i.fa.fa-fw.fa-lock
|
||||||
|Enable Two-Factor Authentication
|
|Disable Two-Factor Authentication
|
||||||
a.option(href="/user/manage/email")
|
else
|
||||||
i.fa.fa-fw.fa-envelope
|
a.option(href="/user/two-factor")
|
||||||
|Change Email Address
|
i.fa.fa-fw.fa-lock
|
||||||
.clients
|
|Enable Two-Factor Authentication
|
||||||
h2 Authorized Applications
|
a.option(href="/user/manage/email")
|
||||||
.specify(title="Applications which have access to basic user information. You may restrict access at any time by pressing the red icon on the top right of the application card.") ?
|
i.fa.fa-fw.fa-envelope
|
||||||
.cl#clientlist
|
|Change Email Address
|
||||||
p Please enable JavaScript to view this content.
|
|
||||||
|
@ -3,20 +3,19 @@ block title
|
|||||||
|Icy Network - Log In - Verification Required
|
|Icy Network - Log In - Verification Required
|
||||||
|
|
||||||
block body
|
block body
|
||||||
.wrapper
|
.container.mt-4.mb-4
|
||||||
.boxcont
|
h1 Enter Code
|
||||||
.box#totpcheck
|
p This user has Two Factor Authentication enabled. Enter the code to log in.
|
||||||
h1 Enter Code
|
if message.text
|
||||||
small.descr This user has Two Factor Authentication enabled. Enter the code to log in.
|
if message.error
|
||||||
if message.text
|
.alert.alert-danger
|
||||||
if message.error
|
span #{message.text}
|
||||||
.message.error
|
else
|
||||||
span #{message.text}
|
.alert.alert-success
|
||||||
else
|
span #{message.text}
|
||||||
.message
|
form#loginForm(method="POST", action="")
|
||||||
span #{message.text}
|
input(type="hidden", name="csrf", value=csrf)
|
||||||
form#loginForm(method="POST", action="")
|
.form-group
|
||||||
input(type="hidden", name="csrf", value=csrf)
|
label(for="code") Code
|
||||||
label(for="code") Code
|
input.form-control#code(type="text", name="code", autocomplete="off")
|
||||||
input(type="text", name="code", id="code", autocomplete="off")
|
button.btn.btn-primary(type="submit") Log in
|
||||||
input(type="submit", value="Log in")
|
|
||||||
|
@ -3,33 +3,40 @@ block title
|
|||||||
|Icy Network - Activate Authenticator
|
|Icy Network - Activate Authenticator
|
||||||
|
|
||||||
block body
|
block body
|
||||||
.wrapper
|
.container.mt-4.mb-4
|
||||||
.boxcont
|
nav(aria-label="breadcrumb")
|
||||||
.box#login
|
ol.breadcrumb
|
||||||
h1 Two Factor Authentication
|
li.breadcrumb-item
|
||||||
.left
|
a(href="/") Home
|
||||||
if message.text
|
li.breadcrumb-item
|
||||||
if message.error
|
a(href="/user/manage") User Settings
|
||||||
.message.error
|
li.breadcrumb-item.active(aria-current="page") Enable Two Factor Authentication
|
||||||
span #{message.text}
|
h1 Two Factor Authentication
|
||||||
else
|
.row
|
||||||
.message
|
.col
|
||||||
span #{message.text}
|
if message.text
|
||||||
img.qr(src="//api.qrserver.com/v1/create-qr-code/?data=" + uri)
|
if message.error
|
||||||
form#totpForm(method="POST", action="")
|
.alert.alert-danger
|
||||||
input(type="hidden", name="csrf", value=csrf)
|
span #{message.text}
|
||||||
|
else
|
||||||
|
.alert.alert-warning
|
||||||
|
span #{message.text}
|
||||||
|
img.qr(src="//api.qrserver.com/v1/create-qr-code/?data=" + uri)
|
||||||
|
form#totpForm(method="POST", action="")
|
||||||
|
input(type="hidden", name="csrf", value=csrf)
|
||||||
|
.form-group
|
||||||
label(for="code") Enter the Code
|
label(for="code") Enter the Code
|
||||||
input(type="text", name="code", id="code", autocomplete="off")
|
input.form-control#code(type="text", name="code", autocomplete="off")
|
||||||
input(type="submit", value="Enable Now")
|
button.btn.btn-primary(type="submit") Enable Now
|
||||||
.right
|
aside.col
|
||||||
h3 How to use
|
h3 How to use
|
||||||
ol
|
ol
|
||||||
li Scan the QR Code with your authenticator app
|
li Scan the QR Code with your authenticator app
|
||||||
li Enter the one-time code given to you
|
li Enter the one-time code given to you
|
||||||
li You will now be asked for a code every time you log in
|
li You will now be asked for a code every time you log in
|
||||||
h3 Authenticator app
|
h3 Authenticator app
|
||||||
p We recommend using Google Authenticator
|
p We recommend using Google Authenticator. You can download it below for your smartphone:
|
||||||
a.dlbtn(href='https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1', target="_blank")
|
a.app-button(href='https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1', target="_blank")
|
||||||
img(alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png')
|
img(alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png')
|
||||||
a.dlbtn.apple(href='https://itunes.apple.com/us/app/google-authenticator/id388497605', target="_blank")
|
a.app-button.apple(href='https://itunes.apple.com/us/app/google-authenticator/id388497605', target="_blank")
|
||||||
img(alt='Download on the App Store' src='https://devimages-cdn.apple.com/app-store/marketing/guidelines/images/badge-download-on-the-app-store.svg')
|
img(alt='Download on the App Store' src='https://devimages-cdn.apple.com/app-store/marketing/guidelines/images/badge-download-on-the-app-store.svg')
|
||||||
|
Reference in New Issue
Block a user