XSS fix, books only shows title with out color atm...

This commit is contained in:
sava 2020-03-28 04:03:36 +01:00
parent 1d9e4fa598
commit 135e877fa8
6 changed files with 35 additions and 18 deletions

View File

@ -6,12 +6,11 @@ var list = function(user) {
.withConverter(bookConverter) .withConverter(bookConverter)
.get() .get()
.then(function(query) { .then(function(query) {
html = '<br/>' $('#books').html('<br/>')
query.forEach(function(doc) { query.forEach(function(doc) {
book = doc.data() book = doc.data()
html += book.toHtml(user) book.toHtml($('#books'))
}) })
$('#books').html(html)
}).catch(function(error) { }).catch(function(error) {
$('#books').html('<h3>Kunne ikke hente bøker!</h3><br/><p>'+error+'</p>') $('#books').html('<h3>Kunne ikke hente bøker!</h3><br/><p>'+error+'</p>')
$('#books').css('color', 'red') $('#books').css('color', 'red')
@ -30,7 +29,7 @@ var add = function() {
)).then(function() { )).then(function() {
$('#status').html('<p>La til bok '+$('#title')[0].value+'!</p>') $('#status').html('<p>La til bok '+$('#title')[0].value+'!</p>')
$('#status').css('color', 'green') $('#status').css('color', 'green')
list(firebase.auth().currentUser) list()
}).catch(function() { }).catch(function() {
$('#status').html('<p>Problem med å legge til bok '+$('#title')[0].value+'!</p>') $('#status').html('<p>Problem med å legge til bok '+$('#title')[0].value+'!</p>')
$('#status').css('color', 'red') $('#status').css('color', 'red')
@ -40,7 +39,7 @@ var add = function() {
var remove = function(id) { var remove = function(id) {
db.collection("bibliotek").doc(id) db.collection("bibliotek").doc(id)
.delete().then(function() { .delete().then(function() {
list(firebase.auth().currentUser) list()
}).catch(function(error) { }).catch(function(error) {
alert("Error removing document: ", error) alert("Error removing document: ", error)
}) })

View File

@ -1,5 +1,5 @@
#kommentar { .kommentar {
font-size: 1.1rem; font-size: 1.1rem;
word-wrap: break-word; word-wrap: break-word;
} }

View File

@ -6,15 +6,14 @@ var list = function() {
.withConverter(commentConverter) .withConverter(commentConverter)
.get() .get()
.then(function(query) { .then(function(query) {
html = '<br/>' $('#kommentarer').html('<br/>')
query.forEach(function(doc) { query.forEach(function(doc) {
book = doc.data() book = doc.data()
html += book.toHtml(firebase.auth().currentUser) book.toHtml($('#kommentarer'))
}) })
$('#kommentarer').html(html)
}).catch(function(error) { }).catch(function(error) {
$('#kommentarer').html('<h3>Kunne ikke hente ker!</h3><br/><p>'+error+'</p>') $('#status').html('<h3>Kunne ikke hente kommentarer!</h3><br/><p>'+error.message+'</p>')
$('#kommentarer').css('color', 'red') $('#status').css('color', 'red')
}) })
} }
@ -27,6 +26,7 @@ var add = function() {
)).then(function() { )).then(function() {
$('#status').html('<p>La til melding med navn '+$('#navn')[0].value+'!</p>') $('#status').html('<p>La til melding med navn '+$('#navn')[0].value+'!</p>')
$('#status').css('color', 'green') $('#status').css('color', 'green')
$('#kommentarer').html('')
list() list()
}).catch(function() { }).catch(function() {
$('#status').html('<p>Problem med å legge til melding med navn '+$('#navn')[0].value+'!</p>') $('#status').html('<p>Problem med å legge til melding med navn '+$('#navn')[0].value+'!</p>')
@ -37,6 +37,7 @@ var add = function() {
var remove = function(id) { var remove = function(id) {
db.collection("gjestebok").doc(id) db.collection("gjestebok").doc(id)
.delete().then(function() { .delete().then(function() {
$('#kommentarer').html('')
list() list()
}).catch(function(error) { }).catch(function(error) {
alert("Error removing document: ", error) alert("Error removing document: ", error)

View File

@ -32,6 +32,7 @@
<!-- <a type="submit" class="btn btn-primary" href="javascript: list()">Hent kommentarer</a> --> <!-- <a type="submit" class="btn btn-primary" href="javascript: list()">Hent kommentarer</a> -->
<div id="kommentarer"> <div id="kommentarer">
</div> </div>
<p id="status"></p>
</div> </div>
<script type="text/javascript" src="/it1/gjestebok/gjestebok.js"></script> <script type="text/javascript" src="/it1/gjestebok/gjestebok.js"></script>
</body> </body>

View File

@ -11,14 +11,26 @@ class Book {
toString() { toString() {
return this.title+' av '+this.author+', terningkast '+this.rating+', utgitt '+this.published.toString().slice(0,15)+', forlag; '+this.publisher return this.title+' av '+this.author+', terningkast '+this.rating+', utgitt '+this.published.toString().slice(0,15)+', forlag; '+this.publisher
} }
toHtml(user=false) { toHtml(elm) {
let span = function(selector, string, color='red') {
$($(selector)[$(selector).length-1]).append('<span style="color: '+color+'"></span>')
//$($(selector+' > span')[$(selector+' > span').length-1])
}
let user = firebase.auth().currentUser
elm.append('<p class="book"></p>', this.title)
span('.book')
//.text(this.toString())
if (user) {
$($('.kommentar')[$('.kommentar').length-1]).append(' &nbsp; <a class="btn btn-primary" href="javascript: remove(\''+this.cfid+'\')">Slett</a>')
}
} /*
let span = function(string, color='red') { let span = function(string, color='red') {
return '<span style="color: '+color+'">'+string+'</span>' return '<span style="color: '+color+'">'+string+'</span>'
} }
return '<p>'+span(this.title)+' av '+span(this.author)+', terningkast '+span(this.rating)+', utgitt ' return '<p>'+span(this.title)+' av '+span(this.author)+', terningkast '+span(this.rating)+', utgitt '
+span(this.published.toString().slice(0,15), 'green')+', forlag; '+span(this.publisher, 'yellow') +span(this.published.toString().slice(0,15), 'green')+', forlag; '+span(this.publisher, 'yellow')
+(user?' &nbsp; <a class="btn btn-primary" href="javascript: remove(\''+this.cfid+'\')">Slett</a>':'')+'</p>' +(user?' &nbsp; <a class="btn btn-primary" href="javascript: remove(\''+this.cfid+'\')">Slett</a>':'')+'</p>'
} }*/
} }
bookConverter = { bookConverter = {

View File

@ -8,9 +8,13 @@ class Comment {
toString() { toString() {
return this.name+': '+this.message return this.name+': '+this.message
} }
toHtml(user) { toHtml(elm) {
return '<p id="kommentar">'+this.name+': '+this.message let user = firebase.auth().currentUser
+(user?' &nbsp; <a class="btn btn-primary" href="javascript: remove(\''+this.cfid+'\')">Slett</a>':'')+'</p>' elm.append('<p class="kommentar"></p>')
$($('.kommentar')[$('.kommentar').length-1]).text(this.toString())
if (user) {
$($('.kommentar')[$('.kommentar').length-1]).append(' &nbsp; <a class="btn btn-primary" href="javascript: remove(\''+this.cfid+'\')">Slett</a>')
}
} }
} }