Skip to content

Commit 527646b

Browse files
author
sw-yx
committed
add providers
1 parent 84ccf7f commit 527646b

File tree

4 files changed

+55
-175
lines changed

4 files changed

+55
-175
lines changed

package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,14 @@
3434
"typescript": "^3.4.4"
3535
},
3636
"peerDependencies": {
37-
"react": "^15.0.0 || ^16.0.0",
38-
"react-dom": "^15.0.0 || ^16.0.0",
3937
"@reach/dialog": "^0.2.3",
4038
"@reach/tabs": "^0.1.3",
41-
"@reach/visually-hidden": "^0.1.3"
39+
"@reach/visually-hidden": "^0.1.3",
40+
"react": "^15.0.0 || ^16.0.0",
41+
"react-dom": "^15.0.0 || ^16.0.0"
4242
},
4343
"dependencies": {
44-
"react-netlify-identity": "^0.0.12"
44+
"react-netlify-identity": "^0.0.15"
4545
},
4646
"config": {
4747
"commitizen": {

src/app.tsx

+9-37
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,14 @@ import { Logout } from "./components/logout"
44
import { Signup } from "./components/signup"
55
import { useIdentityContext } from "./context"
66
import { Tabs, TabList, Tab, TabPanels, TabPanel } from "@reach/tabs"
7-
7+
import { Settings } from "react-netlify-identity"
8+
import { Providers } from "./components/providers"
89
function LoggedOutScreen() {
10+
const { settings } = useIdentityContext()
11+
const [setting, setSetting] = React.useState<Settings | null>(null)
12+
React.useEffect(() => {
13+
settings().then(x => setSetting(x))
14+
}, [settings])
915
return (
1016
<div>
1117
<Tabs defaultIndex={0}>
@@ -23,17 +29,11 @@ function LoggedOutScreen() {
2329
</TabPanel>
2430
</TabPanels>
2531
</Tabs>
26-
27-
{/* <div className="providersGroup">
28-
<hr className="hr" />
29-
<button className="providerGoogle btn btnProvider">Continue with Google</button>
30-
<button className="providerGitHub btn btnProvider">Continue with GitHub</button>
31-
<button className="providerGitLab btn btnProvider">Continue with GitLab</button>
32-
<button className="providerBitBucket btn btnProvider">Continue with BitBucket</button>
33-
</div> */}
32+
<Providers setting={setting} />
3433
</div>
3534
)
3635
}
36+
3737
function LoggedInScreen() {
3838
return <Logout />
3939
}
@@ -48,31 +48,3 @@ function Gate({ }: { onCloseDialog: Function }) {
4848
export function Widget({ onCloseDialog }: { onCloseDialog: Function }) {
4949
return <Gate onCloseDialog={onCloseDialog} />
5050
}
51-
52-
// renderProviders() {
53-
// const { store } = this.props
54-
55-
// if (!(store.gotrue && store.settings)) {
56-
// return null
57-
// }
58-
// if (store.modal.page === "signup" && store.settings.disable_signup) {
59-
// return null
60-
// }
61-
// const page = pages[store.modal.page] || {}
62-
63-
// if (!page.providers) {
64-
// return null
65-
// }
66-
67-
// const providers = ["Google", "GitHub", "GitLab", "BitBucket", "SAML"].filter(
68-
// p => store.settings.external[p.toLowerCase()]
69-
// )
70-
71-
// return providers.length ? (
72-
// <Providers
73-
// providers={providers}
74-
// labels={store.settings.external_labels || {}}
75-
// onLogin={this.handleExternalLogin}
76-
// />
77-
// ) : null
78-
// }

src/components/providers.tsx

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import React from "react"
2+
import { useIdentityContext } from "../context"
3+
import { Settings } from "react-netlify-identity"
4+
export function Providers({ setting }: { setting: Settings | null }) {
5+
const hasProviders =
6+
setting &&
7+
setting.external &&
8+
Object.entries(setting.external).some(([k, v]) => ["github", "gitlab", "bitbucket", "google"].includes(k) && v)
9+
if (!hasProviders) return null
10+
return (
11+
<div className="providersGroup">
12+
<hr className="hr" />
13+
<ProviderButton setting={setting} provider="Google" />
14+
<ProviderButton setting={setting} provider="GitHub" />
15+
<ProviderButton setting={setting} provider="GitLab" />
16+
<ProviderButton setting={setting} provider="BitBucket" />
17+
</div>
18+
)
19+
}
20+
21+
interface Dict<T> {
22+
[id: string]: T
23+
}
24+
function ProviderButton({ setting, provider }: { setting: Settings | null; provider: string }) {
25+
if (!setting) return null
26+
const ext = setting.external as Dict<{}>
27+
if (ext[provider.toLowerCase()]) return null
28+
const { loginProvider } = useIdentityContext()
29+
const click = () => loginProvider(provider.toLowerCase() as "github" | "gitlab" | "bitbucket" | "google" | "facebook")
30+
return (
31+
<button onClick={click} className={`provider${provider} btn btnProvider`}>
32+
Continue with {provider}
33+
</button>
34+
)
35+
}

yarn.lock

+7-134
Original file line numberDiff line numberDiff line change
@@ -101,13 +101,6 @@
101101
core-js "^2.6.5"
102102
regenerator-runtime "^0.13.2"
103103

104-
"@babel/runtime@^7.0.0":
105-
version "7.4.3"
106-
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.4.3.tgz#79888e452034223ad9609187a0ad1fe0d2ad4bdc"
107-
integrity sha512-9lsJwJLxDh/T3Q3SZszfWOTkk3pHbkmH+3KY+zwIDmsNlxsumuhS2TH3NIpktU4kNvfzy+k3eLT7aTJSPTo0OA==
108-
dependencies:
109-
regenerator-runtime "^0.13.2"
110-
111104
"@babel/template@^7.1.0", "@babel/template@^7.4.0":
112105
version "7.4.0"
113106
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.4.0.tgz#12474e9c077bae585c5d835a95c0b0b790c25c8b"
@@ -194,53 +187,6 @@
194187
universal-user-agent "^2.0.0"
195188
url-template "^2.0.8"
196189

197-
"@reach/auto-id@^0.2.0":
198-
version "0.2.0"
199-
resolved "https://registry.yarnpkg.com/@reach/auto-id/-/auto-id-0.2.0.tgz#97f9e48fe736aa5c6f4f32cf73c1f19d005f8550"
200-
integrity sha512-lVK/svL2HuQdp7jgvlrLkFsUx50Az9chAhxpiPwBqcS83I2pVWvXp98FOcSCCJCV++l115QmzHhFd+ycw1zLBg==
201-
202-
"@reach/component-component@^0.1.3":
203-
version "0.1.3"
204-
resolved "https://registry.yarnpkg.com/@reach/component-component/-/component-component-0.1.3.tgz#5d156319572dc38995b246f81878bc2577c517e5"
205-
integrity sha512-a1USH7L3bEfDdPN4iNZGvMEFuBfkdG+QNybeyDv8RloVFgZYRoM+KGXyy2KOfEnTUM8QWDRSROwaL3+ts5Angg==
206-
207-
"@reach/dialog@^0.2.3":
208-
version "0.2.3"
209-
resolved "https://registry.yarnpkg.com/@reach/dialog/-/dialog-0.2.3.tgz#92d402c9173872f2bb6fb9a2faa7da3780e9c3b9"
210-
integrity sha512-kSqgtFt8tPxFPspBIE53duvJegECY/q6OypkWo2pER9zw2GBB4S6LFw0ljw9/4lPDWh2hJbabzhmXLLd+815dQ==
211-
dependencies:
212-
"@reach/component-component" "^0.1.3"
213-
"@reach/portal" "^0.2.0"
214-
"@reach/utils" "^0.2.0"
215-
react-focus-lock "^1.17.7"
216-
react-remove-scroll "^1.0.2"
217-
218-
"@reach/portal@^0.2.0":
219-
version "0.2.0"
220-
resolved "https://registry.yarnpkg.com/@reach/portal/-/portal-0.2.0.tgz#668a6d47ff749d81c2c6804c58c42323b31ac4fe"
221-
integrity sha512-d+4m9LACj3uShSKsMDjKuR1Pw54lzYCh1h6kOvfkpdgLqOZEk/8RvjDCWLvQzvPJIgzCWVAA/Db55xDgOaOYQA==
222-
dependencies:
223-
"@reach/component-component" "^0.1.3"
224-
225-
"@reach/tabs@^0.1.3":
226-
version "0.1.3"
227-
resolved "https://registry.yarnpkg.com/@reach/tabs/-/tabs-0.1.3.tgz#1af4935326998a322e0a6486cdceba82a3227d47"
228-
integrity sha512-9Ml/6FPjtDE6qCltkVIPZ8jzUBcNIVmFVw35EoFQJ/7ZvIYfiwqHqZDqUjgRb3FfhOz/UhefNs7InqsSb/M5Ag==
229-
dependencies:
230-
"@reach/auto-id" "^0.2.0"
231-
"@reach/utils" "^0.2.0"
232-
warning "^4.0.2"
233-
234-
"@reach/utils@^0.2.0":
235-
version "0.2.0"
236-
resolved "https://registry.yarnpkg.com/@reach/utils/-/utils-0.2.0.tgz#504e84613b4aed7adf189aaa6b9d110b282ec523"
237-
integrity sha512-AIfX18Ska78d4SjLt4awYHsgXEIVHhOUxLtxze2XT0D5aPOPx1XJl0seRZfQI0EVod4K1KVvHJnskEYSXqKQQg==
238-
239-
"@reach/visually-hidden@^0.1.3":
240-
version "0.1.3"
241-
resolved "https://registry.yarnpkg.com/@reach/visually-hidden/-/visually-hidden-0.1.3.tgz#96f6ac9a0b62723b2f3e7d384b6143d49b45105a"
242-
integrity sha512-kOmRRmUnWDsdKg6FIkljWk0Oc5v+SFCD5iVoF4moRRIJN/UvwxS2j6CqtCMlur8pc6KRi+D0mkO91nUzwQTYTg==
243-
244190
"@semantic-release/commit-analyzer@^6.1.0":
245191
version "6.1.0"
246192
resolved "https://registry.yarnpkg.com/@semantic-release/commit-analyzer/-/commit-analyzer-6.1.0.tgz#32bbe3c23da86e23edf072fbb276fa2f383fcb17"
@@ -2836,11 +2782,6 @@ flush-write-stream@^1.0.0:
28362782
inherits "^2.0.3"
28372783
readable-stream "^2.3.6"
28382784

2839-
focus-lock@^0.6.0:
2840-
version "0.6.2"
2841-
resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.6.2.tgz#d8ac9dbc46250779789c3e6f43d978c7dfa59dcd"
2842-
integrity sha512-Wuq6TSOgsGQmzbpvinl1TcEw4BAUhD9T06myl5HvaBlO0geAz9ABtqBIqPkkNyO3AgPzEDazetL5hSRgj+2iqQ==
2843-
28442785
for-in@^1.0.1, for-in@^1.0.2:
28452786
version "1.0.2"
28462787
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@@ -4854,7 +4795,7 @@ longest@^1.0.1:
48544795
resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
48554796
integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=
48564797

4857-
loose-envify@^1.0.0, loose-envify@^1.4.0:
4798+
loose-envify@^1.0.0:
48584799
version "1.4.0"
48594800
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
48604801
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@@ -5799,7 +5740,7 @@ oauth-sign@~0.9.0:
57995740
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
58005741
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
58015742

5802-
object-assign@^4.1.0, object-assign@^4.1.1:
5743+
object-assign@^4.1.0:
58035744
version "4.1.1"
58045745
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
58055746
integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
@@ -6395,15 +6336,6 @@ promzard@^0.3.0:
63956336
dependencies:
63966337
read "1"
63976338

6398-
prop-types@^15.6.2:
6399-
version "15.7.2"
6400-
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
6401-
integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
6402-
dependencies:
6403-
loose-envify "^1.4.0"
6404-
object-assign "^4.1.1"
6405-
react-is "^16.8.1"
6406-
64076339
proto-list@~1.2.1:
64086340
version "1.2.4"
64096341
resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
@@ -6561,60 +6493,13 @@ rc@^1.0.1, rc@^1.1.6, rc@^1.2.7, rc@^1.2.8:
65616493
minimist "^1.2.0"
65626494
strip-json-comments "~2.0.1"
65636495

6564-
react-clientside-effect@^1.2.0:
6565-
version "1.2.0"
6566-
resolved "https://registry.yarnpkg.com/react-clientside-effect/-/react-clientside-effect-1.2.0.tgz#db823695f75e9616a5e4dd6d908e5ea627fb2516"
6567-
integrity sha512-cVIsGG7SNHsQsCP4+fw7KFUB0HiYiU8hbvL640XaLCbZ31aK8/lj0qOKJ2K+xRjuQz/IM4Q4qclI0aEqTtcXtA==
6568-
dependencies:
6569-
"@babel/runtime" "^7.0.0"
6570-
shallowequal "^1.1.0"
6571-
6572-
react-focus-lock@^1.17.7:
6573-
version "1.18.3"
6574-
resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-1.18.3.tgz#19d84afeab935c0b5de196922f71db7c481baba4"
6575-
integrity sha512-4fPAHnsr8oCYPgVmcMZ8NbAE9jm/OshPjXEM5PHseu2lDernzm/b1sHhYzZUO4OoW9D/u1AQsV6n4trRllow7w==
6576-
dependencies:
6577-
"@babel/runtime" "^7.0.0"
6578-
focus-lock "^0.6.0"
6579-
prop-types "^15.6.2"
6580-
react-clientside-effect "^1.2.0"
6581-
6582-
react-is@^16.8.1:
6583-
version "16.8.6"
6584-
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16"
6585-
integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==
6586-
6587-
react-netlify-identity@^0.0.12:
6588-
version "0.0.12"
6589-
resolved "https://registry.yarnpkg.com/react-netlify-identity/-/react-netlify-identity-0.0.12.tgz#8479cf37c7ae8380fc7ffe0f52c0d6c9e61dbb03"
6590-
integrity sha512-C4ISeDPAD1N+N0sj4Atcz6DINKxGWV/S46ttY7TMl+oUWreOdzV9SdEx+7G4vRhKfwXnXcF9KZKxUtLXd+0NCA==
6496+
react-netlify-identity@^0.0.15:
6497+
version "0.0.15"
6498+
resolved "https://registry.yarnpkg.com/react-netlify-identity/-/react-netlify-identity-0.0.15.tgz#c4de5ce86e7f2de861e7a91306a3374ab781cab4"
6499+
integrity sha512-wrDMegFz52ngSJRupTaTg113H+ldm8yhsNCCXhHfssW1Amaq6wnZVIZM0K9Oj6bLhtd+mreyUwgYW3g72UG/yQ==
65916500
dependencies:
65926501
gotrue-js "^0.9.25"
65936502

6594-
react-remove-scroll-bar@^1.1.3:
6595-
version "1.1.4"
6596-
resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-1.1.4.tgz#b035e973290fed6da0b479fe9e2bec296408fac8"
6597-
integrity sha512-I9oaQ1DC2Pn0pzfnRMW8Fo+4kRHq/OC9u8dC08JWBMS6ksE7bHpH45y2GhEY8ySC+PtlSVecqz+8mbuRwMSHUA==
6598-
dependencies:
6599-
react-style-singleton "^1.1.0"
6600-
tslib "^1.0.0"
6601-
6602-
react-remove-scroll@^1.0.2:
6603-
version "1.0.6"
6604-
resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-1.0.6.tgz#8c5573255b4c526f8006f8643bb55fa10c410da2"
6605-
integrity sha512-iB2ToQE0sujPU7UZvdvu4LimuWRs5Fp4XO6HFO4PO8ohm4sBUZ/WiRtESwQ9X4DdP7f7yYlEChZaPDzh9faoFQ==
6606-
dependencies:
6607-
react-remove-scroll-bar "^1.1.3"
6608-
tslib "^1.0.0"
6609-
6610-
react-style-singleton@^1.1.0:
6611-
version "1.1.1"
6612-
resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-1.1.1.tgz#b2b698765519da812b80f55ab3c5fc5d849a2e63"
6613-
integrity sha512-0JD+XC5veR3oxf7GzIXipr89sM8R3rWnOR/gpzIV0DnoRBrcTvvkqyMu9icDYqM/6CWJhYcH5Jdy6Nim7PmoTQ==
6614-
dependencies:
6615-
invariant "^2.2.4"
6616-
tslib "^1.0.0"
6617-
66186503
read-cmd-shim@^1.0.1, read-cmd-shim@~1.0.1:
66196504
version "1.0.1"
66206505
resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-1.0.1.tgz#2d5d157786a37c055d22077c32c53f8329e91c7b"
@@ -7337,11 +7222,6 @@ sha@~2.0.1:
73377222
graceful-fs "^4.1.2"
73387223
readable-stream "^2.0.2"
73397224

7340-
shallowequal@^1.1.0:
7341-
version "1.1.0"
7342-
resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8"
7343-
integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==
7344-
73457225
shebang-command@^1.2.0:
73467226
version "1.2.0"
73477227
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
@@ -8131,7 +8011,7 @@ tsdx@^0.3.4:
81318011
tslib "^1.9.3"
81328012
typescript "^3.2.2"
81338013

8134-
[email protected], tslib@^1.0.0, tslib@^1.9.0, tslib@^1.9.3:
8014+
[email protected], tslib@^1.9.0, tslib@^1.9.3:
81358015
version "1.9.3"
81368016
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
81378017
integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
@@ -8399,13 +8279,6 @@ walker@~1.0.5:
83998279
dependencies:
84008280
makeerror "1.0.x"
84018281

8402-
warning@^4.0.2:
8403-
version "4.0.3"
8404-
resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3"
8405-
integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==
8406-
dependencies:
8407-
loose-envify "^1.0.0"
8408-
84098282
watch@~0.18.0:
84108283
version "0.18.0"
84118284
resolved "https://registry.yarnpkg.com/watch/-/watch-0.18.0.tgz#28095476c6df7c90c963138990c0a5423eb4b986"

0 commit comments

Comments
 (0)