commit fb57c44346464d5b3c1bbc930ea58f4fc1c3e456
parent bddea64ecf824d12cea182517be337e4fb7fb586
Author: MTRNord <mtrnord1@gmail.com>
Date: Mon, 21 Aug 2017 21:02:50 +0200
Implement Password Login and Add it to the login button
Diffstat:
2 files changed, 56 insertions(+), 8 deletions(-)
diff --git a/matrix/login.go b/matrix/login.go
@@ -1,5 +1,44 @@
package matrix
import (
- "github.com/matrix-org/gomatrix"
+ "strings"
+ "sync"
+
+ "github.com/matrix-org/gomatrix"
)
+
+var clientInstance *gomatrix.Client
+var once sync.Once
+
+//getClient returns a Client
+func getClient(homeserverURL, userID, accessToken string) (*gomatrix.Client, error) {
+ var err error
+ once.Do(func() {
+ clientInstance, err = gomatrix.NewClient(homeserverURL, userID, accessToken)
+ })
+ if err != nil {
+ return nil, err
+ }
+ return clientInstance, nil
+}
+
+//LoginUser Creates a Session for the User
+func LoginUser(username, password string) (*gomatrix.Client, error) {
+ usernameSplit := strings.Split(username, ":")
+ homeserverURL := usernameSplit[1]
+ cli, cliErr := getClient(homeserverURL, "", "")
+ if cliErr != nil {
+ return nil, cliErr
+ }
+
+ resp, err := cli.Login(&gomatrix.ReqLogin{
+ Type: "m.login.password",
+ User: username,
+ Password: password,
+ })
+ if err != nil {
+ return nil, err
+ }
+ cli.SetCredentials(resp.UserID, resp.AccessToken)
+ return cli, nil
+}
diff --git a/uis.go b/uis.go
@@ -1,6 +1,7 @@
package main
import (
+ "github.com/Nordgedanken/Neo/matrix"
"github.com/therecipe/qt/core"
"github.com/therecipe/qt/uitools"
"github.com/therecipe/qt/widgets"
@@ -20,21 +21,29 @@ func NewLoginUI(windowWidth, windowHeight int) *widgets.QWidget {
file.Close()
var (
- ui_inputUsername = widgets.NewQLineEditFromPointer(widget.FindChild("UsernameInput", core.Qt__FindChildrenRecursively).Pointer())
- ui_inputPassword = widgets.NewQLineEditFromPointer(widget.FindChild("PasswordInput", core.Qt__FindChildrenRecursively).Pointer())
- ui_SubmitButton = widgets.NewQPushButtonFromPointer(widget.FindChild("loginButton", core.Qt__FindChildrenRecursively).Pointer())
+ inputUsername = widgets.NewQLineEditFromPointer(widget.FindChild("UsernameInput", core.Qt__FindChildrenRecursively).Pointer())
+ inputPassword = widgets.NewQLineEditFromPointer(widget.FindChild("PasswordInput", core.Qt__FindChildrenRecursively).Pointer())
+ SubmitButton = widgets.NewQPushButtonFromPointer(widget.FindChild("loginButton", core.Qt__FindChildrenRecursively).Pointer())
)
- ui_inputUsername.ConnectTextChanged(func(value string) {
+ inputUsername.ConnectTextChanged(func(value string) {
username = value
})
- ui_inputPassword.ConnectTextChanged(func(value string) {
+ inputPassword.ConnectTextChanged(func(value string) {
password = value
})
- ui_SubmitButton.ConnectClicked(func(checked bool) {
- localLog.Println(username + " - " + password)
+ SubmitButton.ConnectClicked(func(checked bool) {
+ localLog.Println("Starting Login Sequenze")
+ cli, err := matrix.LoginUser(username, password)
+ if err != nil {
+ localLog.Panicln(err)
+ }
+
+ //TODO remove after testing
+ avatarURL, avatarErr := cli.GetAvatarURL()
+ localLog.Println(avatarURL)
})
loginWidget.SetMinimumSize2(windowWidth, windowHeight)