I wrote 8th entry for your GUI Login challenge:
requires gui
var gui
{ guest: "pa$$w0rd!" } constant passwords
: authenticate
  "edit1" g:child g:text? passwords swap m:@ nip null? if
    "User not found!" . cr
    2drop
  else
    swap
    "edit2" g:child g:text? nip s:= if
      "Authenticated!" . cr
      bye
    else
      "Username and password don't match!" . cr
    then
  then ;
{
  kind: "win",
  buttons: 5,
  title: "Login",
  wide: 360,
  high: 160,
  resizable: false,
  bg:"lightgray",
  center: true,
  init: ( gui ! ),
  children:
  [
    {
      kind: "box",
      name: "frame",
      bounds: "10, 10, parent.width-10, parent.height-10",
      bg: "gray",
      children:
      [
        {
          kind: "label",
          label: "Username:",
          bounds: "parent.left, parent.top+10, 80, top+24 ",
          name: "lbl1"
	 },
        {
          kind: "edit",
          bounds: "lbl1.right+10, lbl1.top, parent.width-10, top+24",
          name: "edit1",
          max-text: 32
        },
        {
          kind: "label",
          label: "Password:",
          bounds: "lbl1.left, lbl1.bottom+10, 80, top+24 ",
          name: "lbl2"
	 },
        {
          kind: "edit",
          bounds: "edit1.left, lbl2.top, parent.width-10, top+24",
          name: "edit2",
          max-text: 32,
          password-char: "*"
        },
        {
          kind: "btn",
          label: "Login",
          bg: "darkgray",
          bounds: "lbl2.left, lbl2.bottom+20, edit2.right, top+30",
          name: "button",
          tooltip: "Login to account",
          click: ' authenticate
        }
      ]
    }
  ]
} var, gui-desc
: app:main
  gui-desc @ g:new ;