Login System Tutorial Part 3 - Sending Request (Current Progress) ================================================================= `Back to Previous Page`_ .. _Back to Previous Page: https://uadmin-docs.readthedocs.io/en/latest/login_system_views/tutorial/part3.html Structure: * `templates`_ * `login.html`_ * `views`_ * `login.go`_ * `views_main.go`_ * `main.go`_ templates --------- **login.html** ^^^^^^^^^^^^^^ `Back to Top`_ .. code-block:: html Login Form





views ----- **login.go** ^^^^^^^^^^^^ `Back to Top`_ .. code-block:: go package views import ( "net/http" "strings" "github.com/uadmin/uadmin" ) // LoginHandler verifies login data and creating sessions for users. func LoginHandler(w http.ResponseWriter, r *http.Request) { // Initialize the fields that we need in the custom struct. type Context struct { Err string ErrExists bool OTPRequired bool Username string Password string } // Call the Context struct. c := Context{} // If the request method is POST if r.Method == "POST" { // This is a login request from the user. username := r.PostFormValue("username") username = strings.TrimSpace(strings.ToLower(username)) password := r.PostFormValue("password") otp := r.PostFormValue("otp") // Login2FA login using username, password and otp for users with OTPRequired = true. session := uadmin.Login2FA(r, username, password, otp) // Display the results here. uadmin.Trail(uadmin.DEBUG, "Session: %s", session) } // Render the login filepath and pass the context data object to the HTML file. uadmin.RenderHTML(w, r, "templates/login.html", c) } **views_main.go** ^^^^^^^^^^^^^^^^^^^ `Back to Top`_ .. code-block:: go package views import ( "net/http" "strings" ) // MainHandler is the main handler for the login system. func MainHandler(w http.ResponseWriter, r *http.Request) { // r.URL.Path creates a new path called "/login_system/" r.URL.Path = strings.TrimPrefix(r.URL.Path, "/login_system") r.URL.Path = strings.TrimSuffix(r.URL.Path, "/") // LoginHandler verifies login data and creating sessions for users. LoginHandler(w, r) } main.go ------- `Back to Top`_ .. _Back To Top: https://uadmin-docs.readthedocs.io/en/latest/login_system_views/tutorial/full_code/part3.html#login-system-tutorial-part-3-sending-request-current-progress .. code-block:: go package main import ( "net/http" // Specify the username that you used inside github.com folder "github.com/username/project_name/views" "github.com/uadmin/uadmin" ) func main() { // Assign RootURL value as "/admin/" and Site Name as "Login System" // NOTE: This code works only if database does not exist yet. uadmin.RootURL = "/admin/" uadmin.SiteName = "Login System" // Login System Main Handler http.HandleFunc("/login_system/", uadmin.Handler(views.MainHandler)) // Run the server uadmin.StartServer() }