morpheus

A Matrix client written in Go-QT
git clone git://archive.git.mtrnord.blog/Nordgedanken/morpheus.git
Log | Files | Refs | README | LICENSE

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:
Mmatrix/login.go | 41++++++++++++++++++++++++++++++++++++++++-
Muis.go | 23++++++++++++++++-------
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)