FEATURE: Allow revoke and connect for Instagram logins
This commit is contained in:
parent
d494feaa32
commit
6566b2f11a
|
@ -128,9 +128,14 @@ export function findAll(siteSettings, capabilities, isMobileDevice) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
["facebook", "google_oauth2", "twitter", "yahoo", "github"].includes(
|
[
|
||||||
name
|
"facebook",
|
||||||
)
|
"google_oauth2",
|
||||||
|
"twitter",
|
||||||
|
"yahoo",
|
||||||
|
"github",
|
||||||
|
"instagram"
|
||||||
|
].includes(name)
|
||||||
) {
|
) {
|
||||||
params.canConnect = true;
|
params.canConnect = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,9 +13,23 @@ class Auth::InstagramAuthenticator < Auth::Authenticator
|
||||||
info&.screen_name || ""
|
info&.screen_name || ""
|
||||||
end
|
end
|
||||||
|
|
||||||
# TODO twitter provides all sorts of extra info, like website/bio etc.
|
def can_revoke?
|
||||||
# it may be worth considering pulling some of it in.
|
true
|
||||||
def after_authenticate(auth_token)
|
end
|
||||||
|
|
||||||
|
def revoke(user, skip_remote: false)
|
||||||
|
info = InstagramUserInfo.find_by(user_id: user.id)
|
||||||
|
raise Discourse::NotFound if info.nil?
|
||||||
|
# Instagram does not have any way for us to revoke tokens on their end
|
||||||
|
info.destroy!
|
||||||
|
true
|
||||||
|
end
|
||||||
|
|
||||||
|
def can_connect_existing_user?
|
||||||
|
true
|
||||||
|
end
|
||||||
|
|
||||||
|
def after_authenticate(auth_token, existing_account: nil)
|
||||||
|
|
||||||
result = Auth::Result.new
|
result = Auth::Result.new
|
||||||
|
|
||||||
|
@ -32,7 +46,16 @@ class Auth::InstagramAuthenticator < Auth::Authenticator
|
||||||
|
|
||||||
user_info = InstagramUserInfo.find_by(instagram_user_id: instagram_user_id)
|
user_info = InstagramUserInfo.find_by(instagram_user_id: instagram_user_id)
|
||||||
|
|
||||||
result.user = user_info.try(:user)
|
if existing_account && (user_info.nil? || existing_account.id != user_info.user_id)
|
||||||
|
user_info.destroy! if user_info
|
||||||
|
user_info = InstagramUserInfo.create!(
|
||||||
|
user_id: existing_account.id,
|
||||||
|
screen_name: screen_name,
|
||||||
|
instagram_user_id: instagram_user_id
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
result.user = user_info&.user
|
||||||
|
|
||||||
result
|
result
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue