Skip to content

Commit 1dfa05f

Browse files
chore(): add courses banners
1 parent 81a4ae5 commit 1dfa05f

13 files changed

+136
-3
lines changed

content/graphql/quick-start.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ In the **code first** approach, you use decorators and TypeScript classes to gen
2929

3030
In the **schema first** approach, the source of truth is GraphQL SDL (Schema Definition Language) files. SDL is a language-agnostic way to share schema files between different platforms. Nest automatically generates your TypeScript definitions (using either classes or interfaces) based on the GraphQL schemas to reduce the need to write redundant boilerplate code.
3131

32+
<app-banner-courses-graphql-cf></app-banner-courses-graphql-cf>
33+
3234
#### Getting started with GraphQL & TypeScript
3335

3436
> info **Hint** In the following chapters, we'll be integrating the `@nestjs/apollo` package. If you want to use `mercurius` package instead, navigate to [this section](/graphql/quick-start#mercurius-integration).
@@ -75,8 +77,6 @@ export class AppModule {}
7577

7678
In this case, these options will be forwarded to the `ApolloServer` constructor.
7779

78-
<app-banner-enterprise></app-banner-enterprise>
79-
8080
#### GraphQL playground
8181

8282
The playground is a graphical, interactive, in-browser GraphQL IDE, available by default on the same URL as the GraphQL server itself. To access the playground, you need a basic GraphQL server configured and running. To see it now, you can install and build the [working example here](https://github.com/nestjs/nest/tree/master/sample/23-graphql-code-first). Alternatively, if you're following along with these code samples, once you've completed the steps in the [Resolvers chapter](/graphql/resolvers-map), you can access the playground.

content/security/authentication.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ The answer is straightforward: by using another, slightly different type of Guar
303303

304304
The second case enumerated above (logged in user) simply relies on the standard type of Guard we already discussed to enable access to protected routes for logged in users.
305305

306-
<app-banner-courses></app-banner-courses>
306+
<app-banner-courses-auth></app-banner-courses-auth>
307307

308308
#### Login route
309309

content/security/authorization.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,8 @@ When a user with insufficient privileges requests an endpoint, Nest automaticall
142142

143143
> info **Hint** If you want to return a different error response, you should throw your own specific exception instead of returning a boolean value.
144144
145+
<app-banner-courses-auth></app-banner-courses-auth>
146+
145147
#### Claims-based authorization
146148

147149
When an identity is created it may be assigned one or more claims issued by a trusted party. A claim is a name-value pair that represents what the subject can do, not what the subject is.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<div class="banner">
2+
<h2>Learn the <span>right</span> way!</h2>
3+
<ul>
4+
<li>
5+
<span><i class="fas fa-check"></i></span> 19 chapters
6+
</li>
7+
<li>
8+
<span><i class="fas fa-check"></i></span> Authn & Authz
9+
</li>
10+
<li>
11+
<span><i class="fas fa-check"></i></span> Official certificate
12+
</li>
13+
<li>
14+
<span><i class="fas fa-check"></i></span> Deep-dive sessions
15+
</li>
16+
</ul>
17+
<a
18+
href="https://courses.nestjs.com/#authentication"
19+
target="_blank"
20+
title="Courses | NestJS - A node.js framework built on top of TypeScript"
21+
class="btn-more"
22+
>Pre-order Authentication course extension</a
23+
>
24+
</div>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { ChangeDetectionStrategy, Component } from '@angular/core';
2+
3+
@Component({
4+
selector: 'app-banner-courses-auth',
5+
templateUrl: './banner-courses-auth.component.html',
6+
styles: [
7+
`
8+
.banner {
9+
background-color: #111;
10+
background-image: url('/assets/banners/courses-auth.jpg');
11+
background-position: center bottom;
12+
}
13+
`,
14+
],
15+
changeDetection: ChangeDetectionStrategy.OnPush,
16+
})
17+
export class BannerCoursesAuthComponent {}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<div class="banner">
2+
<h2>Learn the <span>right</span> way!</h2>
3+
<ul>
4+
<li>
5+
<span><i class="fas fa-check"></i></span> 20+ chapters
6+
</li>
7+
<li>
8+
<span><i class="fas fa-check"></i></span> GraphQL fundamentals
9+
</li>
10+
<li>
11+
<span><i class="fas fa-check"></i></span> Official certificate
12+
</li>
13+
<li>
14+
<span><i class="fas fa-check"></i></span> Deep-dive sessions
15+
</li>
16+
</ul>
17+
<a
18+
href="https://courses.nestjs.com/#graphql-bundle"
19+
target="_blank"
20+
title="Courses | NestJS - A node.js framework built on top of TypeScript"
21+
class="btn-more"
22+
>Explore official GraphQL extensions</a
23+
>
24+
</div>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { ChangeDetectionStrategy, Component } from '@angular/core';
2+
3+
@Component({
4+
selector: 'app-banner-courses-graphql-cf',
5+
templateUrl: './banner-courses-graphql-cf.component.html',
6+
styles: [
7+
`
8+
.banner {
9+
background-color: #111;
10+
background-image: url('/assets/banners/courses-graphql-cf.jpg');
11+
background-position: center bottom;
12+
}
13+
`,
14+
],
15+
changeDetection: ChangeDetectionStrategy.OnPush,
16+
})
17+
export class BannerCoursesGraphQLCodeFirstComponent {}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<div class="banner">
2+
<h2>Learn the <span>right</span> way!</h2>
3+
<ul>
4+
<li>
5+
<span><i class="fas fa-check"></i></span> 80+ chapters
6+
</li>
7+
<li>
8+
<span><i class="fas fa-check"></i></span> 5+ hours of videos
9+
</li>
10+
<li>
11+
<span><i class="fas fa-check"></i></span> Official certificate
12+
</li>
13+
<li>
14+
<span><i class="fas fa-check"></i></span> Deep-dive sessions
15+
</li>
16+
</ul>
17+
<a
18+
href="https://courses.nestjs.com"
19+
target="_blank"
20+
title="Courses | NestJS - A node.js framework built on top of TypeScript"
21+
class="btn-more"
22+
>Explore official courses</a
23+
>
24+
</div>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { ChangeDetectionStrategy, Component } from '@angular/core';
2+
3+
@Component({
4+
selector: 'app-banner-courses-graphql-sf',
5+
templateUrl: './banner-courses-graphql-sf.component.html',
6+
styles: [
7+
`
8+
.banner {
9+
background-color: #111;
10+
background-image: url('/assets/banners/courses-graphql-sf.jpg');
11+
}
12+
`,
13+
],
14+
changeDetection: ChangeDetectionStrategy.OnPush,
15+
})
16+
export class BannerCoursesGraphQLSchemaFirstComponent {}

src/app/shared/shared.module.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import { CommonModule } from '@angular/common';
22
import { NgModule } from '@angular/core';
33
import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';
4+
import { BannerCoursesAuthComponent } from './components/banner-courses-auth/banner-courses-auth.component';
5+
import { BannerCoursesGraphQLCodeFirstComponent } from './components/banner-courses-graphql-cf/banner-courses-graphql-cf.component';
6+
import { BannerCoursesGraphQLSchemaFirstComponent } from './components/banner-courses-graphql-sf/banner-courses-graphql-sf.component';
47
import { BannerCoursesComponent } from './components/banner-courses/banner-courses.component';
58
import { BannerEnterpriseComponent } from './components/banner-enterprise/banner-enterprise.component';
69
import { BannerShopComponent } from './components/banner-shop/banner-shop.component';
@@ -19,6 +22,9 @@ import { ExtensionPipe } from './pipes/extension.pipe';
1922
BannerCoursesComponent,
2023
BannerEnterpriseComponent,
2124
BannerShopComponent,
25+
BannerCoursesGraphQLCodeFirstComponent,
26+
BannerCoursesGraphQLSchemaFirstComponent,
27+
BannerCoursesAuthComponent,
2228
],
2329
exports: [
2430
ExtensionPipe,
@@ -28,6 +34,9 @@ import { ExtensionPipe } from './pipes/extension.pipe';
2834
BannerCoursesComponent,
2935
BannerEnterpriseComponent,
3036
BannerShopComponent,
37+
BannerCoursesGraphQLCodeFirstComponent,
38+
BannerCoursesGraphQLSchemaFirstComponent,
39+
BannerCoursesAuthComponent,
3140
],
3241
})
3342
export class SharedModule {}

0 commit comments

Comments
 (0)