cmd/tailscale: sign-out any Google users when logging out from Tailscale

Fixes tailscale/tailscale#585

Signed-off-by: Elias Naur <mail@eliasnaur.com>
pull/3/head
Elias Naur 5 years ago
parent 053820acda
commit 15632cb15b

@ -56,6 +56,13 @@ public class Peer extends Fragment {
super.onDestroy(); super.onDestroy();
} }
public void googleSignOut() {
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.build();
GoogleSignInClient client = GoogleSignIn.getClient(getActivity(), gso);
client.signOut();
}
public void googleSignIn(String serverOAuthID) { public void googleSignIn(String serverOAuthID) {
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(serverOAuthID) .requestIdToken(serverOAuthID)

@ -606,6 +606,7 @@ func (a *App) processUIEvents(w *app.Window, events []UIEvent, peer jni.Object,
a.store.WriteString(loginMethodPrefKey, loginMethodWeb) a.store.WriteString(loginMethodPrefKey, loginMethodWeb)
requestBackend(e) requestBackend(e)
case LogoutEvent: case LogoutEvent:
a.signOut(peer)
requestBackend(e) requestBackend(e)
case ConnectEvent: case ConnectEvent:
requestBackend(e) requestBackend(e)
@ -621,7 +622,22 @@ func (a *App) processUIEvents(w *app.Window, events []UIEvent, peer jni.Object,
} }
} }
func (a *App) signOut(peer jni.Object) {
if peer == 0 {
return
}
err := jni.Do(a.jvm, func(env jni.Env) error {
return a.callVoidMethod(peer, "googleSignOut", "()V")
})
if err != nil {
fatalErr(err)
}
}
func (a *App) googleSignIn(peer jni.Object) { func (a *App) googleSignIn(peer jni.Object) {
if peer == 0 {
return
}
err := jni.Do(a.jvm, func(env jni.Env) error { err := jni.Do(a.jvm, func(env jni.Env) error {
sid := jni.JavaString(env, serverOAuthID) sid := jni.JavaString(env, serverOAuthID)
return a.callVoidMethod(peer, "googleSignIn", "(Ljava/lang/String;)V", jni.Value(sid)) return a.callVoidMethod(peer, "googleSignIn", "(Ljava/lang/String;)V", jni.Value(sid))
@ -632,6 +648,9 @@ func (a *App) googleSignIn(peer jni.Object) {
} }
func (a *App) browseToURL(peer jni.Object, url string) { func (a *App) browseToURL(peer jni.Object, url string) {
if peer == 0 {
return
}
err := jni.Do(a.jvm, func(env jni.Env) error { err := jni.Do(a.jvm, func(env jni.Env) error {
jurl := jni.JavaString(env, url) jurl := jni.JavaString(env, url)
return a.callVoidMethod(peer, "showURL", "(Ljava/lang/String;)V", jni.Value(jurl)) return a.callVoidMethod(peer, "showURL", "(Ljava/lang/String;)V", jni.Value(jurl))

Loading…
Cancel
Save