-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #711 from firebase/appcheck-start
Appcheck Version of Codelab
- Loading branch information
Showing
32 changed files
with
7,175 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
# Logs | ||
logs | ||
*.log | ||
npm-debug.log* | ||
yarn-debug.log* | ||
yarn-error.log* | ||
firebase-debug.log* | ||
firebase-debug.*.log* | ||
|
||
# Firebase cache | ||
.firebase/ | ||
|
||
# Firebase config | ||
|
||
# Uncomment this if you'd like others to create their own Firebase project. | ||
# For a team working on the same Firebase project(s), it is recommended to leave | ||
# it commented so all members can deploy to the same project(s) in .firebaserc. | ||
# .firebaserc | ||
|
||
# Runtime data | ||
pids | ||
*.pid | ||
*.seed | ||
*.pid.lock | ||
|
||
# Directory for instrumented libs generated by jscoverage/JSCover | ||
lib-cov | ||
|
||
# Coverage directory used by tools like istanbul | ||
coverage | ||
|
||
# nyc test coverage | ||
.nyc_output | ||
|
||
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) | ||
.grunt | ||
|
||
# Bower dependency directory (https://bower.io/) | ||
bower_components | ||
|
||
# node-waf configuration | ||
.lock-wscript | ||
|
||
# Compiled binary addons (http://nodejs.org/api/addons.html) | ||
build/Release | ||
|
||
# Dependency directories | ||
node_modules/ | ||
|
||
# Optional npm cache directory | ||
.npm | ||
|
||
# Optional eslint cache | ||
.eslintcache | ||
|
||
# Optional REPL history | ||
.node_repl_history | ||
|
||
# Output of 'npm pack' | ||
*.tgz | ||
|
||
# Yarn Integrity file | ||
.yarn-integrity | ||
|
||
# dotenv environment variables file | ||
.env |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
{ | ||
"firestore": { | ||
"rules": "firestore.rules" | ||
}, | ||
"storage": { | ||
"rules": "storage.rules" | ||
}, | ||
"hosting": { | ||
"source": "hosting", | ||
"ignore": [ | ||
"firebase.json", | ||
"**/.*", | ||
"**/node_modules/**" | ||
] | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
service cloud.firestore { | ||
match /databases/{database}/documents { | ||
// Messages: | ||
// - Anyone can read. | ||
// - Authenticated users can add and edit messages. | ||
// - Validation: Check name is same as auth token and text length below 300 char or that imageUrl is a URL. | ||
// - Deletes are not allowed. | ||
match /messages/{messageId} { | ||
allow read; | ||
allow create, update: if request.auth != null | ||
&& request.resource.data.name == request.auth.token.name | ||
&& (request.resource.data.text is string | ||
&& request.resource.data.text.size() <= 300 | ||
|| request.resource.data.imageUrl is string | ||
&& request.resource.data.imageUrl.matches('https?://.*')); | ||
allow delete: if false; | ||
} | ||
// FCM Tokens: | ||
// - Anyone can write their token. | ||
// - Reading list of tokens is not allowed. | ||
match /fcmTokens/{token} { | ||
allow read: if false; | ||
allow write; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
# Logs | ||
logs | ||
*.log | ||
npm-debug.log* | ||
yarn-debug.log* | ||
yarn-error.log* | ||
pnpm-debug.log* | ||
lerna-debug.log* | ||
|
||
node_modules | ||
dist | ||
dist-ssr | ||
*.local | ||
|
||
# Editor directories and files | ||
.vscode/* | ||
!.vscode/extensions.json | ||
.idea | ||
.DS_Store | ||
*.suo | ||
*.ntvs* | ||
*.njsproj | ||
*.sln | ||
*.sw? |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
// Import and configure the Firebase SDK | ||
import { initializeApp } from 'firebase/app'; | ||
import { getMessaging } from 'firebase/messaging/sw'; | ||
import { getFirebaseConfig } from './src/firebase-config'; | ||
|
||
const firebaseApp = initializeApp(getFirebaseConfig()); | ||
getMessaging(firebaseApp); | ||
console.info('Firebase messaging service worker is set up'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
<!DOCTYPE html> | ||
<!-- | ||
Copyright 2015 Google Inc. All rights reserved. | ||
Licensed under the Apache License, Version 2.0 (the "License"); | ||
you may not use this file except in compliance with the License. | ||
You may obtain a copy of the License at | ||
https://www.apache.org/licenses/LICENSE-2.0 | ||
Unless required by applicable law or agreed to in writing, software | ||
distributed under the License is distributed on an "AS IS" BASIS, | ||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
See the License for the specific language governing permissions and | ||
limitations under the License | ||
--> | ||
<html lang="en"> | ||
<head> | ||
<meta charset="utf-8"> | ||
<meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
<meta name="description" content="Learn how to use the Firebase platform on the Web"> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
<title>Friendly Chat</title> | ||
|
||
<!-- Disable tap highlight on IE --> | ||
<meta name="msapplication-tap-highlight" content="no"> | ||
|
||
<!-- Web Application Manifest --> | ||
<link rel="manifest" href="manifest.json"> | ||
|
||
<!-- Add to homescreen for Chrome on Android --> | ||
<meta name="mobile-web-app-capable" content="yes"> | ||
<meta name="application-name" content="Friendly Chat"> | ||
<meta name="theme-color" content="#303F9F"> | ||
|
||
<!-- Add to homescreen for Safari on iOS --> | ||
<meta name="apple-mobile-web-app-capable" content="yes"> | ||
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> | ||
<meta name="apple-mobile-web-app-title" content="Friendly Chat"> | ||
<meta name="apple-mobile-web-app-status-bar-style" content="#303F9F"> | ||
|
||
<!-- Tile icon for Win8 --> | ||
<meta name="msapplication-TileColor" content="#3372DF"> | ||
<meta name="msapplication-navbutton-color" content="#303F9F"> | ||
|
||
<!-- Material Design Lite --> | ||
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> | ||
<link rel="stylesheet" href="https://code.getmdl.io/1.1.3/material.orange-indigo.min.css"> | ||
<script defer src="https://code.getmdl.io/1.1.3/material.min.js"></script> | ||
|
||
<!-- App Styling --> | ||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&lang=en"> | ||
<link rel="stylesheet" href="style.css"> | ||
|
||
<!-- TODO: Enable First Input Delay polyfill library. --> | ||
<script type="text/javascript">!function(n,e){var t,o,i,c=[],f={passive:!0,capture:!0},r=new Date,a="pointerup",u="pointercancel";function p(n,c){t||(t=c,o=n,i=new Date,w(e),s())}function s(){o>=0&&o<i-r&&(c.forEach(function(n){n(o,t)}),c=[])}function l(t){if(t.cancelable){var o=(t.timeStamp>1e12?new Date:performance.now())-t.timeStamp;"pointerdown"==t.type?function(t,o){function i(){p(t,o),r()}function c(){r()}function r(){e(a,i,f),e(u,c,f)}n(a,i,f),n(u,c,f)}(o,t):p(o,t)}}function w(n){["click","mousedown","keydown","touchstart","pointerdown"].forEach(function(e){n(e,l,f)})}w(n),self.perfMetrics=self.perfMetrics||{},self.perfMetrics.onFirstInputDelay=function(n){c.push(n),s()}}(addEventListener,removeEventListener);</script> | ||
</head> | ||
<body> | ||
<div id="app"></div> | ||
<script type="module" src="/main.js"></script> | ||
<script type="module" src="/src/index.js"></script> | ||
</body> | ||
</html> |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
document.querySelector('#app').innerHTML = ` | ||
<div class="demo-layout mdl-layout mdl-js-layout mdl-layout--fixed-header"> | ||
<!-- Header section containing logo --> | ||
<header class="mdl-layout__header mdl-color-text--white mdl-color--light-blue-700"> | ||
<div class="mdl-cell mdl-cell--12-col mdl-cell--12-col-tablet mdl-grid"> | ||
<div class="mdl-layout__header-row mdl-cell mdl-cell--12-col mdl-cell--12-col-tablet mdl-cell--12-col-desktop"> | ||
<h3><i class="material-icons">chat_bubble_outline</i> Friendly Chat</h3> | ||
</div> | ||
<div id="user-container"> | ||
<div hidden id="user-pic"></div> | ||
<div hidden id="user-name"></div> | ||
<button hidden id="sign-out" class="mdl-button mdl-js-button mdl-js-ripple-effect mdl-color-text--white"> | ||
Sign-out | ||
</button> | ||
<button hidden id="sign-in" class="mdl-button mdl-js-button mdl-js-ripple-effect mdl-color-text--white"> | ||
<i class="material-icons">account_circle</i>Sign-in with Google | ||
</button> | ||
</div> | ||
</div> | ||
</header> | ||
<main class="mdl-layout__content mdl-color--grey-100"> | ||
<div id="messages-card-container" class="mdl-cell mdl-cell--12-col mdl-grid"> | ||
<!-- Messages container --> | ||
<div id="messages-card" class="mdl-card mdl-shadow--2dp mdl-cell mdl-cell--12-col mdl-cell--6-col-tablet mdl-cell--6-col-desktop"> | ||
<div class="mdl-card__supporting-text mdl-color-text--grey-600"> | ||
<div id="messages"> | ||
</div> | ||
<form id="message-form" action="#"> | ||
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label"> | ||
<input class="mdl-textfield__input" type="text" id="message" autocomplete="off"> | ||
<label class="mdl-textfield__label" for="message">Message...</label> | ||
</div> | ||
<button id="submit" disabled type="submit" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect"> | ||
Send | ||
</button> | ||
</form> | ||
<form id="image-form" action="#"> | ||
<input id="mediaCapture" type="file" accept="image/*" capture="camera"> | ||
<button id="submitImage" title="Add an image" class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect mdl-color--amber-400 mdl-color-text--white"> | ||
<i class="material-icons">image</i> | ||
</button> | ||
</form> | ||
</div> | ||
</div> | ||
<div id="must-signin-snackbar" class="mdl-js-snackbar mdl-snackbar"> | ||
<div class="mdl-snackbar__text"></div> | ||
<button class="mdl-snackbar__action" type="button"></button> | ||
</div> | ||
</div> | ||
</main> | ||
</div> | ||
` | ||
|
||
console.log(import.meta.env.MODE); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
{ | ||
"name": "Friendly Chat", | ||
"short_name": "Friendly Chat", | ||
"display": "standalone", | ||
"orientation": "portrait", | ||
"gcm_sender_id": "668582889497" | ||
} | ||
|
Oops, something went wrong.