dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit f5a291c3794b2157046b714ed426a3c326e9c57b
parent 776acbf39911d1bdcb35b47affa765da124b7dee
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Sat, 10 Jun 2023 02:59:42 -0700

simplify message auth

Diffstat:
Mpkg/database/tableChatMessages.go | 33+++++++++++++++++----------------
Mpkg/web/handlers/api/v1/messages.qtpl | 24+++++++-----------------
Mpkg/web/handlers/api/v1/messages.qtpl.go | 646++++++++++++++++++++++++++++++++++++++-----------------------------------------
3 files changed, 336 insertions(+), 367 deletions(-)

diff --git a/pkg/database/tableChatMessages.go b/pkg/database/tableChatMessages.go @@ -184,35 +184,36 @@ func (m *ChatMessage) UserCanDelete(user User) bool { if user.IsAdmin { return true } + // room owner can delete any messages in their room + if m.IsRoomOwner(user) { + return true + } + // User can delete PMs from user 0 + if m.IsPmRecipient(user) && m.User.Username == config.NullUsername { + return true + } + // Own messages can be deleted if not too old + if m.UserID == user.ID { + return !m.TooOldToDelete() + } // Moderators cannot delete vetted user messages - if m.UserID != user.ID && m.User.Vetted { + if user.IsModerator() && m.User.Vetted { return false } // Mod cannot delete admin if user.IsModerator() && m.User.IsAdmin { return false } - // if room owner, you can delete messages - if m.Room.IsRoomOwner(user) { - return true - } - // Mod can delete own messages - if user.IsModerator() && m.User.IsModerator() && user.ID == m.UserID { - return true - } // Mod cannot delete mod if user.IsModerator() && m.User.IsModerator() { return false } - // User can delete PMs from user 0 - if m.ToUserID != nil && *m.ToUserID == user.ID && m.User.Username == config.NullUsername { + // Mod can delete messages they don't own + if user.IsModerator() { return true } - // If not a mod, you can only delete your own message - if !user.IsModerator() && user.ID != m.UserID { - return false - } - return true + // Cannot delete message you don't own + return false } func (m *ChatMessage) TooOldToDelete() bool { diff --git a/pkg/web/handlers/api/v1/messages.qtpl b/pkg/web/handlers/api/v1/messages.qtpl @@ -329,8 +329,13 @@ {%- elseif AuthUser.ID == e.User.ID && AuthUser.HighlightOwnMessages %} own-highlight{%- endif -%} "> {%- if e.UserCanDelete(*AuthUser) -%} - {%- if !e.TooOldToDelete() -%} - {%- if AuthUser.DisplayDeleteButton -%} + {%- if AuthUser.DisplayDeleteButton -%} + {%- if e.TooOldToDelete() -%} + <form method="post" action="/api/v1/chat/messages/delete/{%s e.UUID %}" class="d-inline"> + <input type="hidden" name="csrf" value="{%s CSRF %}" /> + <button class="mod-btn delete_msg_btn f-orange-clr" title="delete"></button> + </form> + {%- else -%} <form method="post" action="/api/v1/chat/messages/delete/{%s e.UUID %}" class="d-inline"> <input type="hidden" name="csrf" value="{%s CSRF %}" /> <button class="mod-btn delete_msg_btn @@ -347,21 +352,6 @@ ></button> </form> {%- endif -%} - {%- elseif (AuthUser.IsModerator() && e.TooOldToDelete() && e.UserID != AuthUser.ID) || AuthUser.IsAdmin || e.IsRoomOwner(*AuthUser) -%} - {%- if AuthUser.DisplayDeleteButton -%} - <form method="post" action="/api/v1/chat/messages/delete/{%s e.UUID %}" class="d-inline"> - <input type="hidden" name="csrf" value="{%s CSRF %}" /> - <button class="mod-btn delete_msg_btn f-orange-clr" title="delete"></button> - </form> - {%- endif -%} - {%- elseif AuthUser.IsModerator() -%} - {%- if AuthUser.DisplayDeleteButton -%} - <div class="spacer16"></div> - {%- endif -%} - {%- else -%} - {%- if AuthUser.DisplayDeleteButton -%} - <div class="spacer16"></div> - {%- endif -%} {%- endif -%} {%- if AuthUser.IsModerator() -%} {%- if e.UserID != AuthUser.ID -%} diff --git a/pkg/web/handlers/api/v1/messages.qtpl.go b/pkg/web/handlers/api/v1/messages.qtpl.go @@ -756,9 +756,9 @@ func StreamRenderMessage(qw422016 *qt422016.Writer, idx int, e database.ChatMess //line messages.qtpl:331 if e.UserCanDelete(*AuthUser) { //line messages.qtpl:332 - if !e.TooOldToDelete() { + if AuthUser.DisplayDeleteButton { //line messages.qtpl:333 - if AuthUser.DisplayDeleteButton { + if e.TooOldToDelete() { //line messages.qtpl:333 qw422016.N().S(` <form method="post" action="/api/v1/chat/messages/delete/`) //line messages.qtpl:334 @@ -770,692 +770,670 @@ func StreamRenderMessage(qw422016 *qt422016.Writer, idx int, e database.ChatMess qw422016.E().S(CSRF) //line messages.qtpl:335 qw422016.N().S(`" /> + <button class="mod-btn delete_msg_btn f-orange-clr" title="delete"></button> + </form> +`) +//line messages.qtpl:338 + } else { +//line messages.qtpl:338 + qw422016.N().S(` <form method="post" action="/api/v1/chat/messages/delete/`) +//line messages.qtpl:339 + qw422016.E().S(e.UUID) +//line messages.qtpl:339 + qw422016.N().S(`" class="d-inline"> + <input type="hidden" name="csrf" value="`) +//line messages.qtpl:340 + qw422016.E().S(CSRF) +//line messages.qtpl:340 + qw422016.N().S(`" /> <button class="mod-btn delete_msg_btn " title="delete" style=" `) -//line messages.qtpl:339 +//line messages.qtpl:344 if string(e.User.Username) != NullUsername { -//line messages.qtpl:340 +//line messages.qtpl:345 if (AuthUser.IsModerator() && e.UserID != AuthUser.ID) || AuthUser.IsAdmin || e.IsRoomOwner(*AuthUser) { -//line messages.qtpl:340 +//line messages.qtpl:345 qw422016.N().S(` animation: `) -//line messages.qtpl:341 +//line messages.qtpl:346 qw422016.N().DL(e.DeleteSecondsRemaining()) -//line messages.qtpl:341 +//line messages.qtpl:346 qw422016.N().S(`s 1s forwards orange_btn; `) -//line messages.qtpl:342 +//line messages.qtpl:347 } else { -//line messages.qtpl:342 +//line messages.qtpl:347 qw422016.N().S(` animation: `) -//line messages.qtpl:343 +//line messages.qtpl:348 qw422016.N().DL(e.DeleteSecondsRemaining()) -//line messages.qtpl:343 +//line messages.qtpl:348 qw422016.N().S(`s 1s forwards hide_btn; `) -//line messages.qtpl:344 +//line messages.qtpl:349 } -//line messages.qtpl:345 +//line messages.qtpl:350 } -//line messages.qtpl:345 +//line messages.qtpl:350 qw422016.N().S(` " ></button> </form> `) -//line messages.qtpl:349 - } -//line messages.qtpl:350 - } else if (AuthUser.IsModerator() && e.TooOldToDelete() && e.UserID != AuthUser.ID) || AuthUser.IsAdmin || e.IsRoomOwner(*AuthUser) { -//line messages.qtpl:351 - if AuthUser.DisplayDeleteButton { -//line messages.qtpl:351 - qw422016.N().S(` <form method="post" action="/api/v1/chat/messages/delete/`) -//line messages.qtpl:352 - qw422016.E().S(e.UUID) -//line messages.qtpl:352 - qw422016.N().S(`" class="d-inline"> - <input type="hidden" name="csrf" value="`) -//line messages.qtpl:353 - qw422016.E().S(CSRF) -//line messages.qtpl:353 - qw422016.N().S(`" /> - <button class="mod-btn delete_msg_btn f-orange-clr" title="delete"></button> - </form> -`) -//line messages.qtpl:356 - } -//line messages.qtpl:357 - } else if AuthUser.IsModerator() { -//line messages.qtpl:358 - if AuthUser.DisplayDeleteButton { -//line messages.qtpl:358 - qw422016.N().S(` <div class="spacer16"></div> -`) -//line messages.qtpl:360 +//line messages.qtpl:354 } -//line messages.qtpl:361 - } else { -//line messages.qtpl:362 - if AuthUser.DisplayDeleteButton { -//line messages.qtpl:362 - qw422016.N().S(` <div class="spacer16"></div> -`) -//line messages.qtpl:364 - } -//line messages.qtpl:365 +//line messages.qtpl:355 } -//line messages.qtpl:366 +//line messages.qtpl:356 if AuthUser.IsModerator() { -//line messages.qtpl:367 +//line messages.qtpl:357 if e.UserID != AuthUser.ID { -//line messages.qtpl:368 +//line messages.qtpl:358 if AuthUser.DisplayHellbanButton { -//line messages.qtpl:369 +//line messages.qtpl:359 if string(e.User.Username) == NullUsername { -//line messages.qtpl:369 +//line messages.qtpl:359 qw422016.N().S(` <div class="spacer16"></div> `) -//line messages.qtpl:371 +//line messages.qtpl:361 } else { -//line messages.qtpl:372 +//line messages.qtpl:362 if e.User.IsHellbanned { -//line messages.qtpl:372 +//line messages.qtpl:362 qw422016.N().S(` <form method="post" action="/api/v1/users/`) -//line messages.qtpl:373 +//line messages.qtpl:363 qw422016.E().S(e.UserID.String()) -//line messages.qtpl:373 +//line messages.qtpl:363 qw422016.N().S(`/unhellban" class="d-inline"> <input type="hidden" name="csrf" value="`) -//line messages.qtpl:374 +//line messages.qtpl:364 qw422016.E().S(CSRF) -//line messages.qtpl:374 +//line messages.qtpl:364 qw422016.N().S(`" /> <button class="mod-btn hb_btn f-orange-clr line-through" title="unhellban"></button> </form> `) -//line messages.qtpl:377 +//line messages.qtpl:367 } else { -//line messages.qtpl:377 +//line messages.qtpl:367 qw422016.N().S(` <form method="post" action="/api/v1/users/`) -//line messages.qtpl:378 +//line messages.qtpl:368 qw422016.E().S(e.UserID.String()) -//line messages.qtpl:378 +//line messages.qtpl:368 qw422016.N().S(`/hellban" class="d-inline"> <input type="hidden" name="csrf" value="`) -//line messages.qtpl:379 +//line messages.qtpl:369 qw422016.E().S(CSRF) -//line messages.qtpl:379 +//line messages.qtpl:369 qw422016.N().S(`" /> <button class="mod-btn hb_btn f-orange-clr" title="hellban"></button> </form> `) -//line messages.qtpl:382 +//line messages.qtpl:372 } -//line messages.qtpl:383 +//line messages.qtpl:373 } -//line messages.qtpl:384 +//line messages.qtpl:374 } -//line messages.qtpl:385 +//line messages.qtpl:375 if AuthUser.DisplayKickButton { -//line messages.qtpl:385 +//line messages.qtpl:375 qw422016.N().S(` <form method="post" action="/api/v1/users/`) -//line messages.qtpl:386 +//line messages.qtpl:376 qw422016.E().S(e.UserID.String()) -//line messages.qtpl:386 +//line messages.qtpl:376 qw422016.N().S(`/kick" class="d-inline"> <input type="hidden" name="csrf" value="`) -//line messages.qtpl:387 +//line messages.qtpl:377 qw422016.E().S(CSRF) -//line messages.qtpl:387 +//line messages.qtpl:377 qw422016.N().S(`" /> <button class="mod-btn k_btn f-orange-clr" title="kick"></button> </form> `) -//line messages.qtpl:390 +//line messages.qtpl:380 } -//line messages.qtpl:391 +//line messages.qtpl:381 } else { -//line messages.qtpl:392 +//line messages.qtpl:382 if AuthUser.DisplayKickButton && AuthUser.DisplayHellbanButton { -//line messages.qtpl:392 +//line messages.qtpl:382 qw422016.N().S(` <div class="spacer36"></div> `) -//line messages.qtpl:394 +//line messages.qtpl:384 } else if AuthUser.DisplayKickButton || AuthUser.DisplayHellbanButton { -//line messages.qtpl:394 +//line messages.qtpl:384 qw422016.N().S(` <div class="spacer16"></div> `) -//line messages.qtpl:396 +//line messages.qtpl:386 } -//line messages.qtpl:397 +//line messages.qtpl:387 } -//line messages.qtpl:398 +//line messages.qtpl:388 } -//line messages.qtpl:399 +//line messages.qtpl:389 } else { -//line messages.qtpl:400 +//line messages.qtpl:390 if Data.NbButtons == 3 { -//line messages.qtpl:400 +//line messages.qtpl:390 qw422016.N().S(` <div class="spacer56"></div> `) -//line messages.qtpl:402 +//line messages.qtpl:392 } else if Data.NbButtons == 2 { -//line messages.qtpl:402 +//line messages.qtpl:392 qw422016.N().S(` <div class="spacer36"></div> `) -//line messages.qtpl:404 +//line messages.qtpl:394 } else if Data.NbButtons == 1 { -//line messages.qtpl:404 +//line messages.qtpl:394 qw422016.N().S(` <div class="spacer16"></div> `) -//line messages.qtpl:406 +//line messages.qtpl:396 } -//line messages.qtpl:407 +//line messages.qtpl:397 } -//line messages.qtpl:408 +//line messages.qtpl:398 if AuthUser.GetDateFormat() != "" { -//line messages.qtpl:408 +//line messages.qtpl:398 qw422016.N().S(` <a href="`) -//line messages.qtpl:409 +//line messages.qtpl:399 qw422016.E().S(baseTopBarURL) -//line messages.qtpl:409 +//line messages.qtpl:399 qw422016.N().S(`?quote=`) -//line messages.qtpl:409 +//line messages.qtpl:399 qw422016.E().S(e.UUID) -//line messages.qtpl:409 +//line messages.qtpl:399 streamunesc(qw422016, Data.TopBarQueryParams) -//line messages.qtpl:409 +//line messages.qtpl:399 qw422016.N().S(`" target="iframe1" class="date date-link" title="`) -//line messages.qtpl:409 +//line messages.qtpl:399 qw422016.E().S(e.CreatedAt.Format("01-02 15:04:05")) -//line messages.qtpl:409 +//line messages.qtpl:399 if *isFirstMsg { -//line messages.qtpl:409 +//line messages.qtpl:399 qw422016.N().S(` (`) -//line messages.qtpl:409 +//line messages.qtpl:399 qw422016.E().S(humanize.Time(e.CreatedAt)) -//line messages.qtpl:409 +//line messages.qtpl:399 qw422016.N().S(`)`) -//line messages.qtpl:409 +//line messages.qtpl:399 } -//line messages.qtpl:409 +//line messages.qtpl:399 qw422016.N().S(`">`) -//line messages.qtpl:409 +//line messages.qtpl:399 qw422016.E().S(e.CreatedAt.Format(AuthUser.GetDateFormat())) -//line messages.qtpl:409 +//line messages.qtpl:399 qw422016.N().S(`</a> `) -//line messages.qtpl:410 +//line messages.qtpl:400 *isFirstMsg = false -//line messages.qtpl:410 +//line messages.qtpl:400 qw422016.N().S(` `) -//line messages.qtpl:411 +//line messages.qtpl:401 } -//line messages.qtpl:411 +//line messages.qtpl:401 qw422016.N().S(` <a href="/u/`) -//line messages.qtpl:412 +//line messages.qtpl:402 qw422016.E().S(string(e.GetProfile(AuthUser))) -//line messages.qtpl:412 +//line messages.qtpl:402 qw422016.N().S(`" target="_blank" class="f-def-clr">-</a> `) -//line messages.qtpl:413 +//line messages.qtpl:403 if e.System { -//line messages.qtpl:413 +//line messages.qtpl:403 qw422016.N().S(` <span class="sysmsg">`) -//line messages.qtpl:414 +//line messages.qtpl:404 streamunesc(qw422016, e.Message) -//line messages.qtpl:414 +//line messages.qtpl:404 qw422016.N().S(`</span> `) -//line messages.qtpl:415 +//line messages.qtpl:405 } else { -//line messages.qtpl:416 +//line messages.qtpl:406 if e.Moderators { -//line messages.qtpl:416 +//line messages.qtpl:406 qw422016.N().S(`<span class="sysmsg">[<a href="`) -//line messages.qtpl:416 +//line messages.qtpl:406 qw422016.E().S(baseTopBarURL) -//line messages.qtpl:416 +//line messages.qtpl:406 qw422016.N().S(`?m=1`) -//line messages.qtpl:416 +//line messages.qtpl:406 streamunesc(qw422016, Data.TopBarQueryParams) -//line messages.qtpl:416 +//line messages.qtpl:406 qw422016.N().S(`" target="iframe1" class="sysmsg f-white-clr">M</a>]</span>&nbsp;`) -//line messages.qtpl:416 +//line messages.qtpl:406 } -//line messages.qtpl:417 +//line messages.qtpl:407 if e.GroupID != nil { -//line messages.qtpl:417 +//line messages.qtpl:407 qw422016.N().S(`<span class="sysmsg">[<a href="`) -//line messages.qtpl:417 +//line messages.qtpl:407 qw422016.E().S(baseTopBarURL) -//line messages.qtpl:417 +//line messages.qtpl:407 qw422016.N().S(`?g=`) -//line messages.qtpl:417 +//line messages.qtpl:407 qw422016.E().S(e.Group.Name) -//line messages.qtpl:417 +//line messages.qtpl:407 streamunesc(qw422016, Data.TopBarQueryParams) -//line messages.qtpl:417 +//line messages.qtpl:407 qw422016.N().S(`" target="iframe1" class="sysmsg f-white-clr">`) -//line messages.qtpl:417 +//line messages.qtpl:407 qw422016.E().S(e.Group.Name) -//line messages.qtpl:417 +//line messages.qtpl:407 qw422016.N().S(`</a>]</span>&nbsp;`) -//line messages.qtpl:417 +//line messages.qtpl:407 } -//line messages.qtpl:418 +//line messages.qtpl:408 if e.ToUserID != nil { -//line messages.qtpl:418 +//line messages.qtpl:408 qw422016.N().S(` [`) -//line messages.qtpl:419 +//line messages.qtpl:409 streamfromUsername(qw422016, AuthUser, Data, e, baseTopBarURL) -//line messages.qtpl:419 +//line messages.qtpl:409 qw422016.N().S(` → `) -//line messages.qtpl:421 +//line messages.qtpl:411 if e.ToUser.ID == AuthUser.ID { -//line messages.qtpl:421 +//line messages.qtpl:411 qw422016.N().S(`<span `) -//line messages.qtpl:421 +//line messages.qtpl:411 streamunesc(qw422016, e.ToUser.GenerateChatStyle()) -//line messages.qtpl:421 +//line messages.qtpl:411 qw422016.N().S(`>`) -//line messages.qtpl:421 +//line messages.qtpl:411 qw422016.E().S(string(e.ToUser.Username)) -//line messages.qtpl:421 +//line messages.qtpl:411 qw422016.N().S(`</span>`) -//line messages.qtpl:421 +//line messages.qtpl:411 } else { -//line messages.qtpl:421 +//line messages.qtpl:411 qw422016.N().S(`<a `) -//line messages.qtpl:421 +//line messages.qtpl:411 streamunesc(qw422016, e.ToUser.GenerateChatStyle()) -//line messages.qtpl:421 +//line messages.qtpl:411 qw422016.N().S(` href="`) -//line messages.qtpl:421 +//line messages.qtpl:411 qw422016.E().S(baseTopBarURL) -//line messages.qtpl:421 +//line messages.qtpl:411 qw422016.N().S(`?pm=`) -//line messages.qtpl:421 +//line messages.qtpl:411 qw422016.E().S(string(e.ToUser.Username)) -//line messages.qtpl:421 +//line messages.qtpl:411 qw422016.E().S(Data.TopBarQueryParams) -//line messages.qtpl:421 +//line messages.qtpl:411 qw422016.N().S(`" target="iframe1">`) -//line messages.qtpl:421 +//line messages.qtpl:411 qw422016.E().S(string(e.ToUser.Username)) -//line messages.qtpl:421 +//line messages.qtpl:411 qw422016.N().S(`</a>`) -//line messages.qtpl:421 +//line messages.qtpl:411 } -//line messages.qtpl:421 +//line messages.qtpl:411 qw422016.N().S(`] - `) -//line messages.qtpl:422 +//line messages.qtpl:412 } else { -//line messages.qtpl:423 +//line messages.qtpl:413 streamfromUsername(qw422016, AuthUser, Data, e, baseTopBarURL) -//line messages.qtpl:424 +//line messages.qtpl:414 if !e.IsMe() { -//line messages.qtpl:425 +//line messages.qtpl:415 if AuthUser.CanSeeHB() && (e.IsHellbanned || e.User.IsHellbanned) && (e.ToUserID == nil) { -//line messages.qtpl:425 +//line messages.qtpl:415 qw422016.N().S(` <a href="`) -//line messages.qtpl:426 +//line messages.qtpl:416 qw422016.E().S(baseTopBarURL) -//line messages.qtpl:426 +//line messages.qtpl:416 qw422016.N().S(`?hbm=1`) -//line messages.qtpl:426 +//line messages.qtpl:416 streamunesc(qw422016, Data.TopBarQueryParams) -//line messages.qtpl:426 +//line messages.qtpl:416 qw422016.N().S(`" target="iframe1" class="f-def-clr">-</a> `) -//line messages.qtpl:427 +//line messages.qtpl:417 } else { -//line messages.qtpl:427 +//line messages.qtpl:417 qw422016.N().S(` - `) -//line messages.qtpl:429 +//line messages.qtpl:419 } -//line messages.qtpl:430 +//line messages.qtpl:420 } -//line messages.qtpl:431 +//line messages.qtpl:421 } -//line messages.qtpl:431 +//line messages.qtpl:421 qw422016.N().S(` <span `) -//line messages.qtpl:432 +//line messages.qtpl:422 streamunesc(qw422016, e.User.GenerateChatStyle()) -//line messages.qtpl:432 +//line messages.qtpl:422 qw422016.N().S(`><span class="o-wrap">`) -//line messages.qtpl:432 +//line messages.qtpl:422 qw422016.N().S(unesc(e.MsgToDisplay())) -//line messages.qtpl:432 +//line messages.qtpl:422 qw422016.N().S(`</span></span> `) -//line messages.qtpl:433 +//line messages.qtpl:423 } -//line messages.qtpl:433 +//line messages.qtpl:423 qw422016.N().S(` </div> `) -//line messages.qtpl:435 +//line messages.qtpl:425 } -//line messages.qtpl:436 +//line messages.qtpl:426 } -//line messages.qtpl:436 +//line messages.qtpl:426 func WriteRenderMessage(qq422016 qtio422016.Writer, idx int, e database.ChatMessage, AuthUser *database.User, Data ChatMessagesData, baseTopBarURL string, readMarkerRendered, isFirstMsg *bool, CSRF, NullUsername string) { -//line messages.qtpl:436 +//line messages.qtpl:426 qw422016 := qt422016.AcquireWriter(qq422016) -//line messages.qtpl:436 +//line messages.qtpl:426 StreamRenderMessage(qw422016, idx, e, AuthUser, Data, baseTopBarURL, readMarkerRendered, isFirstMsg, CSRF, NullUsername) -//line messages.qtpl:436 +//line messages.qtpl:426 qt422016.ReleaseWriter(qw422016) -//line messages.qtpl:436 +//line messages.qtpl:426 } -//line messages.qtpl:436 +//line messages.qtpl:426 func RenderMessage(idx int, e database.ChatMessage, AuthUser *database.User, Data ChatMessagesData, baseTopBarURL string, readMarkerRendered, isFirstMsg *bool, CSRF, NullUsername string) string { -//line messages.qtpl:436 +//line messages.qtpl:426 qb422016 := qt422016.AcquireByteBuffer() -//line messages.qtpl:436 +//line messages.qtpl:426 WriteRenderMessage(qb422016, idx, e, AuthUser, Data, baseTopBarURL, readMarkerRendered, isFirstMsg, CSRF, NullUsername) -//line messages.qtpl:436 +//line messages.qtpl:426 qs422016 := string(qb422016.B) -//line messages.qtpl:436 +//line messages.qtpl:426 qt422016.ReleaseByteBuffer(qb422016) -//line messages.qtpl:436 +//line messages.qtpl:426 return qs422016 -//line messages.qtpl:436 +//line messages.qtpl:426 } -//line messages.qtpl:439 +//line messages.qtpl:429 func StreamMember(qw422016 *qt422016.Writer, AuthUser *database.User, Data ChatMenuData, El managers.UserInfo) { -//line messages.qtpl:439 +//line messages.qtpl:429 qw422016.N().S(` `) -//line messages.qtpl:440 +//line messages.qtpl:430 baseTopBarURL := "/api/v1/chat/top-bar/" + Data.RoomName -//line messages.qtpl:441 +//line messages.qtpl:431 if El.Username == AuthUser.Username { -//line messages.qtpl:441 +//line messages.qtpl:431 qw422016.N().S(` <div> <span style="color: `) -//line messages.qtpl:443 +//line messages.qtpl:433 qw422016.E().S(El.Color) -//line messages.qtpl:443 +//line messages.qtpl:433 qw422016.N().S(`;">`) -//line messages.qtpl:443 +//line messages.qtpl:433 qw422016.E().S(string(El.Username)) -//line messages.qtpl:443 +//line messages.qtpl:433 qw422016.N().S(`</span> `) -//line messages.qtpl:444 +//line messages.qtpl:434 if El.AfkIndicatorEnabled { -//line messages.qtpl:444 +//line messages.qtpl:434 qw422016.N().S(` <small class="afk-indicator">afk</small> `) -//line messages.qtpl:446 +//line messages.qtpl:436 } -//line messages.qtpl:446 +//line messages.qtpl:436 qw422016.N().S(` </div> `) -//line messages.qtpl:448 +//line messages.qtpl:438 } else { -//line messages.qtpl:449 +//line messages.qtpl:439 if !El.IsHellbanned || AuthUser.ID == El.UserID || (El.IsHellbanned && AuthUser.IsHellbanned) || AuthUser.DisplayHellbanned { -//line messages.qtpl:449 +//line messages.qtpl:439 qw422016.N().S(` <div> `) -//line messages.qtpl:451 +//line messages.qtpl:441 tagType := "tag" -//line messages.qtpl:452 +//line messages.qtpl:442 if AuthUser.CanSeeHB() && El.IsHellbanned { -//line messages.qtpl:453 +//line messages.qtpl:443 tagType = "htag" -//line messages.qtpl:454 +//line messages.qtpl:444 } -//line messages.qtpl:455 +//line messages.qtpl:445 qw422016.N().S(`<a href="`) -//line messages.qtpl:456 +//line messages.qtpl:446 qw422016.E().S(baseTopBarURL) -//line messages.qtpl:456 +//line messages.qtpl:446 qw422016.N().S(`?`) -//line messages.qtpl:456 +//line messages.qtpl:446 qw422016.E().S(tagType) -//line messages.qtpl:456 +//line messages.qtpl:446 qw422016.N().S(`=`) -//line messages.qtpl:456 +//line messages.qtpl:446 qw422016.E().S(string(El.Username)) -//line messages.qtpl:456 +//line messages.qtpl:446 streamunesc(qw422016, Data.TopBarQueryParams) -//line messages.qtpl:456 +//line messages.qtpl:446 qw422016.N().S(`"target="iframe1"`) -//line messages.qtpl:458 +//line messages.qtpl:448 if El.IsHellbanned && AuthUser.DisplayHellbanned { -//line messages.qtpl:458 +//line messages.qtpl:448 qw422016.N().S(`class="hb-row"`) -//line messages.qtpl:458 +//line messages.qtpl:448 } -//line messages.qtpl:458 +//line messages.qtpl:448 qw422016.N().S(`style="color:`) -//line messages.qtpl:459 +//line messages.qtpl:449 qw422016.E().S(El.Color) -//line messages.qtpl:459 +//line messages.qtpl:449 qw422016.N().S(`;">`) -//line messages.qtpl:459 +//line messages.qtpl:449 qw422016.E().S(string(El.Username[0])) -//line messages.qtpl:459 +//line messages.qtpl:449 qw422016.N().S(`</a><a href="`) -//line messages.qtpl:460 +//line messages.qtpl:450 qw422016.E().S(baseTopBarURL) -//line messages.qtpl:460 +//line messages.qtpl:450 qw422016.N().S(`?pm=`) -//line messages.qtpl:460 +//line messages.qtpl:450 qw422016.E().S(string(El.Username)) -//line messages.qtpl:460 +//line messages.qtpl:450 streamunesc(qw422016, Data.TopBarQueryParams) -//line messages.qtpl:460 +//line messages.qtpl:450 qw422016.N().S(`"target="iframe1"`) -//line messages.qtpl:462 +//line messages.qtpl:452 if El.IsHellbanned && AuthUser.DisplayHellbanned { -//line messages.qtpl:462 +//line messages.qtpl:452 qw422016.N().S(`class="hb-row"`) -//line messages.qtpl:462 +//line messages.qtpl:452 } -//line messages.qtpl:462 +//line messages.qtpl:452 qw422016.N().S(`style="color:`) -//line messages.qtpl:463 +//line messages.qtpl:453 qw422016.E().S(El.Color) -//line messages.qtpl:463 +//line messages.qtpl:453 qw422016.N().S(`;">`) -//line messages.qtpl:463 +//line messages.qtpl:453 qw422016.E().S(string(El.Username[1 : len(El.Username)-1])) -//line messages.qtpl:463 +//line messages.qtpl:453 qw422016.N().S(`</a><a href="/u/`) -//line messages.qtpl:464 +//line messages.qtpl:454 qw422016.E().S(string(El.Username)) -//line messages.qtpl:464 +//line messages.qtpl:454 qw422016.N().S(`"rel="noopener noreferrer" target="_blank"`) -//line messages.qtpl:466 +//line messages.qtpl:456 if El.IsHellbanned && AuthUser.DisplayHellbanned { -//line messages.qtpl:466 +//line messages.qtpl:456 qw422016.N().S(`class="hb-row"`) -//line messages.qtpl:466 +//line messages.qtpl:456 } -//line messages.qtpl:466 +//line messages.qtpl:456 qw422016.N().S(`style="color:`) -//line messages.qtpl:467 +//line messages.qtpl:457 qw422016.E().S(El.Color) -//line messages.qtpl:467 +//line messages.qtpl:457 qw422016.N().S(`;">`) -//line messages.qtpl:467 +//line messages.qtpl:457 qw422016.E().S(string(El.Username[len(El.Username)-1])) -//line messages.qtpl:467 +//line messages.qtpl:457 qw422016.N().S(`</a>`) -//line messages.qtpl:469 +//line messages.qtpl:459 if El.AfkIndicatorEnabled { -//line messages.qtpl:469 +//line messages.qtpl:459 qw422016.N().S(` <small class="afk-indicator">afk</small> `) -//line messages.qtpl:471 +//line messages.qtpl:461 } -//line messages.qtpl:471 +//line messages.qtpl:461 qw422016.N().S(` </div> `) -//line messages.qtpl:473 +//line messages.qtpl:463 } -//line messages.qtpl:474 +//line messages.qtpl:464 } -//line messages.qtpl:475 +//line messages.qtpl:465 } -//line messages.qtpl:475 +//line messages.qtpl:465 func WriteMember(qq422016 qtio422016.Writer, AuthUser *database.User, Data ChatMenuData, El managers.UserInfo) { -//line messages.qtpl:475 +//line messages.qtpl:465 qw422016 := qt422016.AcquireWriter(qq422016) -//line messages.qtpl:475 +//line messages.qtpl:465 StreamMember(qw422016, AuthUser, Data, El) -//line messages.qtpl:475 +//line messages.qtpl:465 qt422016.ReleaseWriter(qw422016) -//line messages.qtpl:475 +//line messages.qtpl:465 } -//line messages.qtpl:475 +//line messages.qtpl:465 func Member(AuthUser *database.User, Data ChatMenuData, El managers.UserInfo) string { -//line messages.qtpl:475 +//line messages.qtpl:465 qb422016 := qt422016.AcquireByteBuffer() -//line messages.qtpl:475 +//line messages.qtpl:465 WriteMember(qb422016, AuthUser, Data, El) -//line messages.qtpl:475 +//line messages.qtpl:465 qs422016 := string(qb422016.B) -//line messages.qtpl:475 +//line messages.qtpl:465 qt422016.ReleaseByteBuffer(qb422016) -//line messages.qtpl:475 +//line messages.qtpl:465 return qs422016 -//line messages.qtpl:475 +//line messages.qtpl:465 } -//line messages.qtpl:478 +//line messages.qtpl:468 func streamfromUsername(qw422016 *qt422016.Writer, AuthUser *database.User, Data ChatMessagesData, El database.ChatMessage, baseTopBarURL string) { -//line messages.qtpl:479 +//line messages.qtpl:469 tagType := "tag" -//line messages.qtpl:480 +//line messages.qtpl:470 if El.ToUserID != nil { -//line messages.qtpl:481 +//line messages.qtpl:471 tagType = "pm" -//line messages.qtpl:482 +//line messages.qtpl:472 } else if AuthUser.CanSeeHB() && (El.IsHellbanned || El.User.IsHellbanned) { -//line messages.qtpl:483 +//line messages.qtpl:473 tagType = "htag" -//line messages.qtpl:484 +//line messages.qtpl:474 } else if AuthUser.IsModerator() && El.Moderators { -//line messages.qtpl:485 +//line messages.qtpl:475 tagType = "mtag" -//line messages.qtpl:486 +//line messages.qtpl:476 } -//line messages.qtpl:487 +//line messages.qtpl:477 if El.User.ID == AuthUser.ID { -//line messages.qtpl:488 +//line messages.qtpl:478 if El.CanBeEdited() { -//line messages.qtpl:488 +//line messages.qtpl:478 qw422016.N().S(`<a `) -//line messages.qtpl:488 +//line messages.qtpl:478 streamunesc(qw422016, El.User.GenerateChatStyle()) -//line messages.qtpl:488 +//line messages.qtpl:478 qw422016.N().S(` href="`) -//line messages.qtpl:488 +//line messages.qtpl:478 qw422016.E().S(baseTopBarURL) -//line messages.qtpl:488 +//line messages.qtpl:478 qw422016.N().S(`?e=`) -//line messages.qtpl:488 +//line messages.qtpl:478 qw422016.E().S(El.CreatedAt.Format("15:04:05")) -//line messages.qtpl:488 +//line messages.qtpl:478 streamunesc(qw422016, Data.TopBarQueryParams) -//line messages.qtpl:488 +//line messages.qtpl:478 qw422016.N().S(`" target="iframe1">`) -//line messages.qtpl:488 +//line messages.qtpl:478 qw422016.E().S(string(El.User.Username)) -//line messages.qtpl:488 +//line messages.qtpl:478 qw422016.N().S(`</a>`) -//line messages.qtpl:488 +//line messages.qtpl:478 } else { -//line messages.qtpl:488 +//line messages.qtpl:478 qw422016.N().S(`<span `) -//line messages.qtpl:488 +//line messages.qtpl:478 streamunesc(qw422016, El.User.GenerateChatStyle()) -//line messages.qtpl:488 +//line messages.qtpl:478 qw422016.N().S(`>`) -//line messages.qtpl:488 +//line messages.qtpl:478 qw422016.E().S(string(El.User.Username)) -//line messages.qtpl:488 +//line messages.qtpl:478 qw422016.N().S(`</span>`) -//line messages.qtpl:488 +//line messages.qtpl:478 } -//line messages.qtpl:489 +//line messages.qtpl:479 } else { -//line messages.qtpl:489 +//line messages.qtpl:479 qw422016.N().S(`<a `) -//line messages.qtpl:489 +//line messages.qtpl:479 streamunesc(qw422016, El.User.GenerateChatStyle()) -//line messages.qtpl:489 +//line messages.qtpl:479 qw422016.N().S(` href="`) -//line messages.qtpl:489 +//line messages.qtpl:479 qw422016.E().S(baseTopBarURL) -//line messages.qtpl:489 +//line messages.qtpl:479 qw422016.N().S(`?`) -//line messages.qtpl:489 +//line messages.qtpl:479 qw422016.E().S(tagType) -//line messages.qtpl:489 +//line messages.qtpl:479 qw422016.N().S(`=`) -//line messages.qtpl:489 +//line messages.qtpl:479 qw422016.E().S(string(El.User.Username)) -//line messages.qtpl:489 +//line messages.qtpl:479 streamunesc(qw422016, Data.TopBarQueryParams) -//line messages.qtpl:489 +//line messages.qtpl:479 qw422016.N().S(`" target="iframe1">`) -//line messages.qtpl:489 +//line messages.qtpl:479 qw422016.E().S(string(El.User.Username)) -//line messages.qtpl:489 +//line messages.qtpl:479 qw422016.N().S(`</a>`) -//line messages.qtpl:489 +//line messages.qtpl:479 } -//line messages.qtpl:490 +//line messages.qtpl:480 } -//line messages.qtpl:490 +//line messages.qtpl:480 func writefromUsername(qq422016 qtio422016.Writer, AuthUser *database.User, Data ChatMessagesData, El database.ChatMessage, baseTopBarURL string) { -//line messages.qtpl:490 +//line messages.qtpl:480 qw422016 := qt422016.AcquireWriter(qq422016) -//line messages.qtpl:490 +//line messages.qtpl:480 streamfromUsername(qw422016, AuthUser, Data, El, baseTopBarURL) -//line messages.qtpl:490 +//line messages.qtpl:480 qt422016.ReleaseWriter(qw422016) -//line messages.qtpl:490 +//line messages.qtpl:480 } -//line messages.qtpl:490 +//line messages.qtpl:480 func fromUsername(AuthUser *database.User, Data ChatMessagesData, El database.ChatMessage, baseTopBarURL string) string { -//line messages.qtpl:490 +//line messages.qtpl:480 qb422016 := qt422016.AcquireByteBuffer() -//line messages.qtpl:490 +//line messages.qtpl:480 writefromUsername(qb422016, AuthUser, Data, El, baseTopBarURL) -//line messages.qtpl:490 +//line messages.qtpl:480 qs422016 := string(qb422016.B) -//line messages.qtpl:490 +//line messages.qtpl:480 qt422016.ReleaseByteBuffer(qb422016) -//line messages.qtpl:490 +//line messages.qtpl:480 return qs422016 -//line messages.qtpl:490 +//line messages.qtpl:480 }