Don't return errors from Logout
This commit is contained in:
10
commands.go
10
commands.go
@@ -201,15 +201,15 @@ var cmdLogout = &commands.FullHandler{
|
|||||||
Section: commands.HelpSectionAuth,
|
Section: commands.HelpSectionAuth,
|
||||||
Description: "Forget the stored Discord auth token.",
|
Description: "Forget the stored Discord auth token.",
|
||||||
},
|
},
|
||||||
RequiresLogin: true,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func fnLogout(ce *WrappedCommandEvent) {
|
func fnLogout(ce *WrappedCommandEvent) {
|
||||||
err := ce.User.Logout()
|
wasLoggedIn := ce.User.DiscordID != ""
|
||||||
if err != nil {
|
ce.User.Logout()
|
||||||
ce.Reply("Error logging out: %v", err)
|
if wasLoggedIn {
|
||||||
} else {
|
|
||||||
ce.Reply("Logged out successfully.")
|
ce.Reply("Logged out successfully.")
|
||||||
|
} else {
|
||||||
|
ce.Reply("You weren't logged in, but data was re-cleared just to be safe.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
@@ -207,45 +206,14 @@ func (p *ProvisioningAPI) ping(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
func (p *ProvisioningAPI) logout(w http.ResponseWriter, r *http.Request) {
|
func (p *ProvisioningAPI) logout(w http.ResponseWriter, r *http.Request) {
|
||||||
user := r.Context().Value("user").(*User)
|
user := r.Context().Value("user").(*User)
|
||||||
force := strings.ToLower(r.URL.Query().Get("force")) != "false"
|
var msg string
|
||||||
|
if user.DiscordID != "" {
|
||||||
if !user.IsLoggedIn() {
|
msg = "Logged out successfully."
|
||||||
jsonResponse(w, http.StatusNotFound, Error{
|
} else {
|
||||||
Error: "You're not logged in",
|
msg = "User wasn't logged in."
|
||||||
ErrCode: "not logged in",
|
|
||||||
})
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
user.Logout()
|
||||||
if user.Session == nil {
|
jsonResponse(w, http.StatusOK, Response{true, msg})
|
||||||
if force {
|
|
||||||
jsonResponse(w, http.StatusOK, Response{true, "Logged out successfully."})
|
|
||||||
} else {
|
|
||||||
jsonResponse(w, http.StatusNotFound, Error{
|
|
||||||
Error: "You're not logged in",
|
|
||||||
ErrCode: "not logged in",
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
err := user.Logout()
|
|
||||||
if err != nil {
|
|
||||||
user.log.Warnln("Error while logging out:", err)
|
|
||||||
|
|
||||||
if !force {
|
|
||||||
jsonResponse(w, http.StatusInternalServerError, Error{
|
|
||||||
Error: fmt.Sprintf("Unknown error while logging out: %v", err),
|
|
||||||
ErrCode: err.Error(),
|
|
||||||
})
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
jsonResponse(w, http.StatusOK, Response{true, "Logged out successfully."})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *ProvisioningAPI) login(w http.ResponseWriter, r *http.Request) {
|
func (p *ProvisioningAPI) login(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|||||||
26
user.go
26
user.go
@@ -417,32 +417,30 @@ func (user *User) IsLoggedIn() bool {
|
|||||||
return user.DiscordToken != ""
|
return user.DiscordToken != ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (user *User) Logout() error {
|
func (user *User) Logout() {
|
||||||
user.Lock()
|
user.Lock()
|
||||||
defer user.Unlock()
|
defer user.Unlock()
|
||||||
|
|
||||||
if user.Session == nil {
|
if user.DiscordID != "" {
|
||||||
return ErrNotLoggedIn
|
puppet := user.bridge.GetPuppetByID(user.DiscordID)
|
||||||
}
|
if puppet.CustomMXID != "" {
|
||||||
|
err := puppet.SwitchCustomMXID("", "")
|
||||||
puppet := user.bridge.GetPuppetByID(user.DiscordID)
|
if err != nil {
|
||||||
if puppet.CustomMXID != "" {
|
user.log.Warnln("Failed to logout-matrix while logging out of Discord:", err)
|
||||||
err := puppet.SwitchCustomMXID("", "")
|
}
|
||||||
if err != nil {
|
|
||||||
user.log.Warnln("Failed to logout-matrix while logging out of Discord:", err)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := user.Session.Close(); err != nil {
|
if user.Session != nil {
|
||||||
return err
|
if err := user.Session.Close(); err != nil {
|
||||||
|
user.log.Warnln("Error closing session:", err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
user.Session = nil
|
user.Session = nil
|
||||||
user.DiscordID = ""
|
user.DiscordID = ""
|
||||||
user.DiscordToken = ""
|
user.DiscordToken = ""
|
||||||
user.Update()
|
user.Update()
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (user *User) Connected() bool {
|
func (user *User) Connected() bool {
|
||||||
|
|||||||
Reference in New Issue
Block a user