.
8 | .list-group {
9 | // No need to set list-style: none; since .list-group-item is block level
10 | margin-bottom: 20px;
11 | padding-left: 0; // reset padding because ul and ol
12 | }
13 |
14 | // Individual list items
15 | // -------------------------
16 |
17 | .list-group-item {
18 | position: relative;
19 | display: block;
20 | padding: 10px 15px;
21 | // Place the border on the list items and negative margin up for better styling
22 | margin-bottom: -1px;
23 | background-color: $list-group-bg;
24 | border: 1px solid $list-group-border;
25 |
26 | // Round the first and last items
27 | &:first-child {
28 | border-top-radius($list-group-border-radius);
29 | }
30 | &:last-child {
31 | margin-bottom: 0;
32 | border-bottom-radius($list-group-border-radius);
33 | }
34 |
35 | // Align badges within list items
36 | > .badge {
37 | float: right;
38 | }
39 | > .badge + .badge {
40 | margin-right: 5px;
41 | }
42 |
43 | // Linked list items
44 | a& {
45 | color: $list-group-link-color;
46 |
47 | .list-group-item-heading {
48 | color: $list-group-link-heading-color;
49 | }
50 |
51 | // Hover state
52 | &:hover,
53 | &:focus {
54 | text-decoration: none;
55 | background-color: $list-group-hover-bg;
56 | }
57 | }
58 |
59 | // Active class on item itself, not parent
60 | &.active,
61 | &.active:hover,
62 | &.active:focus {
63 | z-index: 2; // Place active items above their siblings for proper border styling
64 | color: $list-group-active-color;
65 | background-color: $list-group-active-bg;
66 | border-color: $list-group-active-border;
67 |
68 | // Force color to inherit for custom content
69 | .list-group-item-heading {
70 | color: inherit;
71 | }
72 | .list-group-item-text {
73 | color: lighten($list-group-active-bg, 70%);
74 | }
75 | }
76 | }
77 |
78 | // Custom content options
79 | // -------------------------
80 |
81 | .list-group-item-heading {
82 | margin-top: 0;
83 | margin-bottom: 5px;
84 | }
85 | .list-group-item-text {
86 | margin-bottom: 0;
87 | line-height: 1.3;
88 | }
--------------------------------------------------------------------------------
/SPAuth/Content/stylus/bootstrap/media.styl:
--------------------------------------------------------------------------------
1 | // Media objects
2 | // Source: http://stubbornella.org/content/?p=497
3 | // --------------------------------------------------
4 |
5 |
6 | // Common styles
7 | // -------------------------
8 |
9 | // Clear the floats
10 | .media,
11 | .media-body {
12 | overflow: hidden;
13 | zoom: 1;
14 | }
15 |
16 | // Proper spacing between instances of .media
17 | .media,
18 | .media .media {
19 | margin-top: 15px;
20 | }
21 | .media:first-child {
22 | margin-top: 0;
23 | }
24 |
25 | // For images and videos, set to block
26 | .media-object {
27 | display: block;
28 | }
29 |
30 | // Reset margins on headings for tighter default spacing
31 | .media-heading {
32 | margin: 0 0 5px;
33 | }
34 |
35 |
36 | // Media image alignment
37 | // -------------------------
38 |
39 | .media {
40 | > .pull-left {
41 | margin-right: 10px;
42 | }
43 | > .pull-right {
44 | margin-left: 10px;
45 | }
46 | }
47 |
48 |
49 | // Media list variation
50 | // -------------------------
51 |
52 | // Undo default ul/ol styles
53 | .media-list {
54 | padding-left: 0;
55 | list-style: none;
56 | }
57 |
--------------------------------------------------------------------------------
/SPAuth/Content/stylus/bootstrap/pager.styl:
--------------------------------------------------------------------------------
1 | //
2 | // Pager pagination
3 | // --------------------------------------------------
4 |
5 |
6 | .pager {
7 | padding-left: 0;
8 | margin: $line-height-computed 0;
9 | list-style: none;
10 | text-align: center;
11 | clearfix();
12 | li {
13 | display: inline;
14 | > a,
15 | > span {
16 | display: inline-block;
17 | padding: 5px 14px;
18 | background-color: $pagination-bg;
19 | border: 1px solid $pagination-border;
20 | border-radius: $pager-border-radius;
21 | }
22 |
23 | > a:hover,
24 | > a:focus {
25 | text-decoration: none;
26 | background-color: $pagination-hover-bg;
27 | }
28 | }
29 |
30 | .next {
31 | > a,
32 | > span {
33 | float: right;
34 | }
35 | }
36 |
37 | .previous {
38 | > a,
39 | > span {
40 | float: left;
41 | }
42 | }
43 |
44 | .disabled {
45 | > a,
46 | > a:hover,
47 | > a:focus,
48 | > span {
49 | color: $pager-disabled-color;
50 | background-color: $pagination-bg;
51 | cursor: not-allowed;
52 | }
53 | }
54 |
55 | }
--------------------------------------------------------------------------------
/SPAuth/Content/stylus/bootstrap/pagination.styl:
--------------------------------------------------------------------------------
1 | //
2 | // Pagination (multiple pages)
3 | // --------------------------------------------------
4 | .pagination {
5 | display: inline-block;
6 | padding-left: 0;
7 | margin: $line-height-computed 0;
8 | border-radius: $border-radius-base;
9 |
10 | > li {
11 | display: inline; // Remove list-style and block-level defaults
12 | > a,
13 | > span {
14 | position: relative;
15 | float: left; // Collapse white-space
16 | padding: $padding-base-vertical $padding-base-horizontal;
17 | line-height: $line-height-base;
18 | text-decoration: none;
19 | background-color: $pagination-bg;
20 | border: 1px solid $pagination-border;
21 | margin-left: -1px;
22 | }
23 | &:first-child {
24 | > a,
25 | > span {
26 | margin-left: 0;
27 | border-left-radius($border-radius-base);
28 | }
29 | }
30 | &:last-child {
31 | > a,
32 | > span {
33 | border-right-radius($border-radius-base);
34 | }
35 | }
36 | }
37 |
38 | > li > a,
39 | > li > span {
40 | &:hover,
41 | &:focus {
42 | background-color: $pagination-hover-bg;
43 | }
44 | }
45 |
46 | > .active > a,
47 | > .active > span {
48 | &,
49 | &:hover,
50 | &:focus {
51 | z-index: 2;
52 | color: $pagination-active-color;
53 | background-color: $pagination-active-bg;
54 | border-color: $pagination-active-bg;
55 | cursor: default;
56 | }
57 | }
58 |
59 | > .disabled {
60 | > span,
61 | > a,
62 | > a:hover,
63 | > a:focus {
64 | color: $pagination-disabled-color;
65 | background-color: $pagination-bg;
66 | border-color: $pagination-border;
67 | cursor: not-allowed;
68 | }
69 | }
70 | }
71 |
72 | // Sizing
73 | // --------------------------------------------------
74 |
75 | // Large
76 | .pagination-lg {
77 | pagination-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $border-radius-large);
78 | }
79 |
80 | // Small
81 | .pagination-sm {
82 | pagination-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $border-radius-small);
83 | }
84 |
--------------------------------------------------------------------------------
/SPAuth/Content/stylus/bootstrap/print.styl:
--------------------------------------------------------------------------------
1 | //
2 | // Basic print styles
3 | // --------------------------------------------------
4 | // Source: https://github.com/h5bp/html5-boilerplate/blob/master/css/main.css
5 |
6 | @media print {
7 |
8 | * {
9 | text-shadow: none !important;
10 | color: #000 !important; // Black prints faster: h5bp.com/s
11 | background: transparent !important;
12 | box-shadow: none !important;
13 | }
14 |
15 | a,
16 | a:visited {
17 | text-decoration: underline;
18 | }
19 |
20 | a[href]:after {
21 | content: " (" attr(href) ")";
22 | }
23 |
24 | abbr[title]:after {
25 | content: " (" attr(title) ")";
26 | }
27 |
28 | // Don't show links for images, or javascript/internal links
29 | .ir a:after,
30 | a[href^="javascript:"]:after,
31 | a[href^="#"]:after {
32 | content: "";
33 | }
34 |
35 | pre,
36 | blockquote {
37 | border: 1px solid #999;
38 | page-break-inside: avoid;
39 | }
40 |
41 | thead {
42 | display: table-header-group; // h5bp.com/t
43 | }
44 |
45 | tr,
46 | img {
47 | page-break-inside: avoid;
48 | }
49 |
50 | img {
51 | max-width: 100% !important;
52 | }
53 |
54 | @page {
55 | margin: 2cm .5cm;
56 | }
57 |
58 | p,
59 | h2,
60 | h3 {
61 | orphans: 3;
62 | widows: 3;
63 | }
64 |
65 | h2,
66 | h3 {
67 | page-break-after: avoid;
68 | }
69 |
70 | // Bootstrap components
71 | .navbar {
72 | display: none;
73 | }
74 | .table {
75 | td,
76 | th {
77 | background-color: #fff !important;
78 | }
79 | }
80 | .btn,
81 | .dropup > .btn {
82 | > .caret {
83 | border-top-color: #000 !important;
84 | }
85 | }
86 | .label {
87 | border: 1px solid #000;
88 | }
89 |
90 | .table {
91 | border-collapse: collapse !important;
92 | }
93 | .table-bordered {
94 | th,
95 | td {
96 | border: 1px solid #ddd !important;
97 | }
98 | }
99 |
100 | }
101 |
--------------------------------------------------------------------------------
/SPAuth/Content/stylus/bootstrap/thumbnails.styl:
--------------------------------------------------------------------------------
1 | //
2 | // Thumbnails
3 | // --------------------------------------------------
4 |
5 |
6 | // Mixin and adjust the regular image class
7 | .thumbnail {
8 | img-thumbnail();
9 | display: block; // Override the inline-block from `.img-thumbnail`
10 |
11 | > img {
12 | img-responsive();
13 | }
14 | }
15 |
16 |
17 | // Add a hover state for linked versions only
18 | a.thumbnail:hover,
19 | a.thumbnail:focus {
20 | border-color: $link-color;
21 | }
22 |
23 | // Images and captions
24 | .thumbnail > img {
25 | margin-left: auto;
26 | margin-right: auto;
27 | }
28 | .thumbnail .caption {
29 | padding: $thumbnail-caption-padding;
30 | color: $thumbnail-caption-color;
31 | }
32 |
--------------------------------------------------------------------------------
/SPAuth/Content/stylus/bootstrap/utilities.styl:
--------------------------------------------------------------------------------
1 | //
2 | // Utility classes
3 | // --------------------------------------------------
4 |
5 |
6 | // Floats
7 | // -------------------------
8 |
9 | .clearfix {
10 | clearfix();
11 | }
12 |
13 | pull-right() {
14 | float: right !important;
15 | }
16 |
17 | pull-left() {
18 | float: left !important;
19 | }
20 |
21 | .pull-right {
22 | pull-right()
23 | }
24 |
25 | .pull-left {
26 | pull-left()
27 | }
28 |
29 |
30 | // Toggling content
31 | // -------------------------
32 |
33 | .hide {
34 | display: none !important;
35 | }
36 | .show {
37 | display: block !important;
38 | }
39 | .invisible {
40 | visibility: hidden;
41 | }
42 | .text-hide {
43 | hide-text();
44 | }
45 |
46 |
47 | // For Affix plugin
48 | // -------------------------
49 |
50 | .affix {
51 | position: fixed;
52 | }
53 |
--------------------------------------------------------------------------------
/SPAuth/Content/stylus/bootstrap/wells.styl:
--------------------------------------------------------------------------------
1 | //
2 | // Wells
3 | // --------------------------------------------------
4 |
5 |
6 | // Base class
7 | .well {
8 | min-height: 20px;
9 | padding: 19px;
10 | margin-bottom: 20px;
11 | background-color: $well-bg;
12 | border: 1px solid darken($well-bg, 7%);
13 | border-radius: $border-radius-base;
14 | box-shadow inset 0 1px 1px rgba(0,0,0,.05);
15 | blockquote {
16 | border-color: #ddd;
17 | border-color: rgba(0,0,0,.15);
18 | }
19 | }
20 |
21 | // Sizes
22 | .well-lg {
23 | padding: 24px;
24 | border-radius: $border-radius-large;
25 | }
26 | .well-sm {
27 | padding: 9px;
28 | border-radius: $border-radius-small;
29 | }
30 |
--------------------------------------------------------------------------------
/SPAuth/Content/stylus/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "player",
3 | "version": "0.0.0",
4 | "dependencies": {},
5 | "devDependencies": {
6 | "grunt": "~0.4.1",
7 | "grunt-contrib-connect": "~0.3.0",
8 | "grunt-contrib-watch": "~0.5.2",
9 | "grunt-open": "~0.2.0",
10 | "grunt-concurrent": "~0.3.0",
11 | "load-grunt-tasks": "~0.1.0",
12 | "connect-livereload": "~0.2.0",
13 | "stylus": "*",
14 | "nib": "*",
15 | "time-grunt": "~0.1.0",
16 | "grunt-contrib-stylus": "~0.8.0"
17 | },
18 | "engines": {
19 | "node": ">=0.8.0"
20 | },
21 | "scripts": {
22 | "test": "grunt test"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/SPAuth/Content/stylus/site/style.styl:
--------------------------------------------------------------------------------
1 | @import 'nib'
2 |
3 | @import '../bootstrap/variables'
4 |
5 | /* Typography */
6 |
7 | /* Containers */
8 | body
9 | background $gray-lighter
10 | .loading
11 | position absolute
12 | top 50%
13 | left 50%
14 | width 300px
15 | margin-left -(@width /2)
16 | section#body
17 | padding $navbar-height 0 $grid-gutter-width
18 | background #fff
19 | footer
20 | padding $grid-gutter-width 0
21 | color $gray-light
22 | font-size $font-size-small
23 |
24 | /* Alerts */
25 | div.appAlerts
26 | position: fixed;
27 | top:20px;
28 | right:20px;
29 | z-index: 1200;
30 | width: 90%;
31 | max-width: 300px;
32 |
33 | /* Forms */
34 | .form-group.multiple
35 | margin-bottom 0
36 | input, textarea, select
37 | &.ng-invalid.ng-dirty
38 | border-color: $state-danger-text;
39 | box-shadow inset 0 1px 1px rgba(0,0,0,.075);
40 | &:focus
41 | border-color: darken(@border-color, 10%);
42 | box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten(@border-color, 20%);
43 |
44 | /* Helpers */
45 | .gutter-top
46 | margin-top ($grid-gutter-width /2)
47 | .gutter-bottom
48 | margin-bottom ($grid-gutter-width /2)
49 | .ng-cloak
50 | display none
--------------------------------------------------------------------------------
/SPAuth/Content/stylus/watch.bat:
--------------------------------------------------------------------------------
1 | grunt watchStyles
--------------------------------------------------------------------------------
/SPAuth/Controllers/HomeController.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Web.Mvc;
5 |
6 | namespace SPAuth.Controllers {
7 | public class HomeController : Controller {
8 | public ActionResult Index() {
9 | return View();
10 | }
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/SPAuth/Global.asax:
--------------------------------------------------------------------------------
1 | <%@ Application Codebehind="Global.asax.cs" Inherits="SPAuth.MvcApplication" Language="C#" %>
2 |
--------------------------------------------------------------------------------
/SPAuth/Global.asax.cs:
--------------------------------------------------------------------------------
1 | using System.Web;
2 | using System.Web.Http;
3 | using System.Web.Mvc;
4 | using System.Web.Optimization;
5 | using System.Web.Routing;
6 |
7 | namespace SPAuth {
8 | public class MvcApplication : HttpApplication {
9 | protected void Application_Start() {
10 | AreaRegistration.RegisterAllAreas();
11 | GlobalConfiguration.Configure(WebApiConfig.Register);
12 | FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
13 | RouteConfig.RegisterRoutes(RouteTable.Routes);
14 | BundleConfig.RegisterBundles(BundleTable.Bundles);
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/SPAuth/Migrations/201404061517596_Intial.Designer.cs:
--------------------------------------------------------------------------------
1 | //
2 | namespace SPAuth.Migrations
3 | {
4 | using System.CodeDom.Compiler;
5 | using System.Data.Entity.Migrations;
6 | using System.Data.Entity.Migrations.Infrastructure;
7 | using System.Resources;
8 |
9 | [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")]
10 | public sealed partial class Intial : IMigrationMetadata
11 | {
12 | private readonly ResourceManager Resources = new ResourceManager(typeof(Intial));
13 |
14 | string IMigrationMetadata.Id
15 | {
16 | get { return "201404061517596_Intial"; }
17 | }
18 |
19 | string IMigrationMetadata.Source
20 | {
21 | get { return null; }
22 | }
23 |
24 | string IMigrationMetadata.Target
25 | {
26 | get { return Resources.GetString("Target"); }
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/SPAuth/Migrations/Configuration.cs:
--------------------------------------------------------------------------------
1 | namespace SPAuth.Migrations
2 | {
3 | using System;
4 | using System.Data.Entity;
5 | using System.Data.Entity.Migrations;
6 | using System.Linq;
7 |
8 | internal sealed class Configuration : DbMigrationsConfiguration
9 | {
10 | public Configuration()
11 | {
12 | AutomaticMigrationsEnabled = true;
13 | }
14 |
15 | protected override void Seed(SPAuth.Models.AppContext context)
16 | {
17 | // This method will be called after migrating to the latest version.
18 |
19 | // You can use the DbSet.AddOrUpdate() helper extension method
20 | // to avoid creating duplicate seed data. E.g.
21 | //
22 | // context.People.AddOrUpdate(
23 | // p => p.FullName,
24 | // new Person { FullName = "Andrew Peters" },
25 | // new Person { FullName = "Brice Lambson" },
26 | // new Person { FullName = "Rowan Miller" }
27 | // );
28 | //
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/SPAuth/Models/AppContext.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNet.Identity.EntityFramework;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Data.Entity;
5 | using System.Linq;
6 | using System.Web;
7 |
8 | namespace SPAuth.Models {
9 | public class AppContext : IdentityDbContext {
10 | public AppContext()
11 | : base("DefaultConnection") {
12 | }
13 |
14 | //Db Sets
15 | //public virtual DbSet Partners { get; set; }
16 |
17 | static AppContext() {
18 | // Set the database intializer which is run once during application start
19 | // This seeds the database with admin user credentials and admin role
20 | Database.SetInitializer(new ApplicationDbInitializer());
21 | }
22 |
23 | public static AppContext Create() {
24 | return new AppContext();
25 | }
26 | }
27 | }
--------------------------------------------------------------------------------
/SPAuth/Models/User.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.AspNet.Identity;
2 | using Microsoft.AspNet.Identity.EntityFramework;
3 | using Microsoft.Owin.Security.OAuth;
4 | using System.Data.Entity;
5 | using System.Security.Claims;
6 | using System.Threading.Tasks;
7 |
8 | namespace SPAuth.Models {
9 | public class User : IdentityUser {
10 | public async Task GenerateUserIdentityAsync(UserManager manager, string authenticationType = OAuthDefaults.AuthenticationType) {
11 | // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
12 | var userIdentity = await manager.CreateIdentityAsync(this, authenticationType);
13 | // Add custom user claims here
14 | return userIdentity;
15 | }
16 | }
17 | }
--------------------------------------------------------------------------------
/SPAuth/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("SPAuth")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("SPAuth")]
13 | [assembly: AssemblyCopyright("Copyright © 2013")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("92c7df3c-9c50-447c-aef8-151eadeeb7dc")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Revision and Build Numbers
33 | // by using the '*' as shown below:
34 | [assembly: AssemblyVersion("1.0.0.0")]
35 | [assembly: AssemblyFileVersion("1.0.0.0")]
36 |
--------------------------------------------------------------------------------
/SPAuth/Scripts/_references.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustMaier/MVC5-SPA-Angular/dd0c79ea8fb7ee02c051396d3905aa6a3d28068f/SPAuth/Scripts/_references.js
--------------------------------------------------------------------------------
/SPAuth/Scripts/angular-cookies.min.js:
--------------------------------------------------------------------------------
1 | /*
2 | AngularJS v1.2.15
3 | (c) 2010-2014 Google, Inc. http://angularjs.org
4 | License: MIT
5 | */
6 | (function(p,f,n){'use strict';f.module("ngCookies",["ng"]).factory("$cookies",["$rootScope","$browser",function(e,b){var c={},g={},h,k=!1,l=f.copy,m=f.isUndefined;b.addPollFn(function(){var a=b.cookies();h!=a&&(h=a,l(a,g),l(a,c),k&&e.$apply())})();k=!0;e.$watch(function(){var a,d,e;for(a in g)m(c[a])&&b.cookies(a,n);for(a in c)d=c[a],f.isString(d)||(d=""+d,c[a]=d),d!==g[a]&&(b.cookies(a,d),e=!0);if(e)for(a in d=b.cookies(),c)c[a]!==d[a]&&(m(d[a])?delete c[a]:c[a]=d[a])});return c}]).factory("$cookieStore",
7 | ["$cookies",function(e){return{get:function(b){return(b=e[b])?f.fromJson(b):b},put:function(b,c){e[b]=f.toJson(c)},remove:function(b){delete e[b]}}}])})(window,window.angular);
8 | //# sourceMappingURL=angular-cookies.min.js.map
9 |
--------------------------------------------------------------------------------
/SPAuth/Scripts/angular-cookies.min.js.map:
--------------------------------------------------------------------------------
1 | {
2 | "version":3,
3 | "file":"angular-cookies.min.js",
4 | "lineCount":7,
5 | "mappings":"A;;;;;aAKC,SAAQ,CAACA,CAAD,CAASC,CAAT,CAAkBC,CAAlB,CAA6B,CAmBtCD,CAAAE,OAAA,CAAe,WAAf,CAA4B,CAAC,IAAD,CAA5B,CAAAC,QAAA,CA4BW,UA5BX,CA4BuB,CAAC,YAAD,CAAe,UAAf,CAA2B,QAAS,CAACC,CAAD,CAAaC,CAAb,CAAuB,CAAA,IACxEC,EAAU,EAD8D,CAExEC,EAAc,EAF0D,CAGxEC,CAHwE,CAIxEC,EAAU,CAAA,CAJ8D,CAKxEC,EAAOV,CAAAU,KALiE,CAMxEC,EAAcX,CAAAW,YAGlBN,EAAAO,UAAA,CAAmB,QAAQ,EAAG,CAC5B,IAAIC,EAAiBR,CAAAC,QAAA,EACjBE,EAAJ,EAA0BK,CAA1B,GACEL,CAGA,CAHqBK,CAGrB,CAFAH,CAAA,CAAKG,CAAL,CAAqBN,CAArB,CAEA,CADAG,CAAA,CAAKG,CAAL,CAAqBP,CAArB,CACA,CAAIG,CAAJ,EAAaL,CAAAU,OAAA,EAJf,CAF4B,CAA9B,CAAA,EAUAL,EAAA,CAAU,CAAA,CAKVL,EAAAW,OAAA,CASAC,QAAa,EAAG,CAAA,IACVC,CADU,CAEVC,CAFU,CAIVC,CAGJ,KAAKF,CAAL,GAAaV,EAAb,CACMI,CAAA,CAAYL,CAAA,CAAQW,CAAR,CAAZ,CAAJ,EACEZ,CAAAC,QAAA,CAAiBW,CAAjB,CAAuBhB,CAAvB,CAKJ,KAAIgB,CAAJ,GAAYX,EAAZ,CACEY,CAKA,CALQZ,CAAA,CAAQW,CAAR,CAKR,CAJKjB,CAAAoB,SAAA,CAAiBF,CAAjB,CAIL,GAHEA,CACA,CADQ,EACR,CADaA,CACb,CAAAZ,CAAA,CAAQW,CAAR,CAAA,CAAgBC,CAElB,EAAIA,CAAJ,GAAcX,CAAA,CAAYU,CAAZ,CAAd,GACEZ,CAAAC,QAAA,CAAiBW,CAAjB,CAAuBC,CAAvB,CACA,CAAAC,CAAA,CAAU,CAAA,CAFZ,CAOF,IAAIA,CAAJ,CAIE,IAAKF,CAAL,GAFAI,EAEaf,CAFID,CAAAC,QAAA,EAEJA,CAAAA,CAAb,CACMA,CAAA,CAAQW,CAAR,CAAJ,GAAsBI,CAAA,CAAeJ,CAAf,CAAtB,GAEMN,CAAA,CAAYU,CAAA,CAAeJ,CAAf,CAAZ,CAAJ,CACE,OAAOX,CAAA,CAAQW,CAAR,CADT,CAGEX,CAAA,CAAQW,CAAR,CAHF,CAGkBI,CAAA,CAAeJ,CAAf,CALpB,CAhCU,CAThB,CAEA,OAAOX,EA1BqE,CAA3D,CA5BvB,CAAAH,QAAA,CA0HW,cA1HX;AA0H2B,CAAC,UAAD,CAAa,QAAQ,CAACmB,CAAD,CAAW,CAErD,MAAO,KAWAC,QAAQ,CAACC,CAAD,CAAM,CAEjB,MAAO,CADHN,CACG,CADKI,CAAA,CAASE,CAAT,CACL,EAAQxB,CAAAyB,SAAA,CAAiBP,CAAjB,CAAR,CAAkCA,CAFxB,CAXd,KA0BAQ,QAAQ,CAACF,CAAD,CAAMN,CAAN,CAAa,CACxBI,CAAA,CAASE,CAAT,CAAA,CAAgBxB,CAAA2B,OAAA,CAAeT,CAAf,CADQ,CA1BrB,QAuCGU,QAAQ,CAACJ,CAAD,CAAM,CACpB,OAAOF,CAAA,CAASE,CAAT,CADa,CAvCjB,CAF8C,CAAhC,CA1H3B,CAnBsC,CAArC,CAAA,CA8LEzB,MA9LF,CA8LUA,MAAAC,QA9LV;",
6 | "sources":["angular-cookies.js"],
7 | "names":["window","angular","undefined","module","factory","$rootScope","$browser","cookies","lastCookies","lastBrowserCookies","runEval","copy","isUndefined","addPollFn","currentCookies","$apply","$watch","push","name","value","updated","isString","browserCookies","$cookies","get","key","fromJson","put","toJson","remove"]
8 | }
9 |
--------------------------------------------------------------------------------
/SPAuth/Scripts/angular-csp.css:
--------------------------------------------------------------------------------
1 | /* Include this file in your html if you are using the CSP mode. */
2 |
3 | @charset "UTF-8";
4 |
5 | [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak],
6 | .ng-cloak, .x-ng-cloak,
7 | .ng-hide {
8 | display: none !important;
9 | }
10 |
11 | ng\:form {
12 | display: block;
13 | }
14 |
15 | .ng-animate-block-transitions {
16 | transition:0s all!important;
17 | -webkit-transition:0s all!important;
18 | }
19 |
--------------------------------------------------------------------------------
/SPAuth/Scripts/angular-loader.min.js:
--------------------------------------------------------------------------------
1 | /*
2 | AngularJS v1.2.15
3 | (c) 2010-2014 Google, Inc. http://angularjs.org
4 | License: MIT
5 | */
6 | (function(){'use strict';function d(a){return function(){var c=arguments[0],b,c="["+(a?a+":":"")+c+"] http://errors.angularjs.org/1.2.15/"+(a?a+"/":"")+c;for(b=1;b
2 |
3 |
4 |
5 |
Confirming Email...
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/SPAuth/Views/Home/_ForgotPassword.cshtml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/SPAuth/Views/Home/_Home.cshtml:
--------------------------------------------------------------------------------
1 |
30 |
31 |
--------------------------------------------------------------------------------
/SPAuth/Views/Home/_Login.cshtml:
--------------------------------------------------------------------------------
1 |
26 |
--------------------------------------------------------------------------------
/SPAuth/Views/Home/_Manage.cshtml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/SPAuth/Views/Home/_Register.cshtml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/SPAuth/Views/Home/_RegisterExternal.cshtml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/SPAuth/Views/Home/_ResetPassword.cshtml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/SPAuth/Views/Shared/Error.cshtml:
--------------------------------------------------------------------------------
1 | @model System.Web.Mvc.HandleErrorInfo
2 | @{
3 | ViewBag.Title = "Error";
4 | }
5 |
6 | Error.
7 | An error occurred while processing your request.
8 |
9 |
--------------------------------------------------------------------------------
/SPAuth/Views/Shared/_Layout.cshtml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | @ViewBag.Title - My ASP.NET Application
6 |
7 |
8 | @Styles.Render("~/Content/css")
9 | @Scripts.Render("~/bundles/modernizr")
10 |
11 |
12 |
13 |
14 |
22 |
23 |
24 | - @Html.ActionLink("Home", "Index", "Home")
25 |
26 |
27 |
28 |
29 |
30 | @RenderBody()
31 |
32 |
35 |
36 |
37 | @Scripts.Render("~/bundles/angular")
38 | @Scripts.Render("~/bundles/angularBootstrap")
39 | @Scripts.Render("~/bundles/app")
40 | @RenderSection("Scripts", required: false)
41 |
42 |
43 |
--------------------------------------------------------------------------------
/SPAuth/Views/Web.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/SPAuth/Views/_ViewStart.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | Layout = "~/Views/Shared/_Layout.cshtml";
3 | }
4 |
--------------------------------------------------------------------------------
/SPAuth/Web.Debug.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
17 |
18 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/SPAuth/Web.Release.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
17 |
18 |
19 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/SPAuth/Web/Utility.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Web;
5 |
6 | namespace SPAuth.Web {
7 | public static class Utility {
8 | public static string AbsoluteUrl(string relativeUrl) {
9 | if (string.IsNullOrEmpty(relativeUrl))
10 | return relativeUrl;
11 |
12 | var httpContext = HttpContext.Current;
13 | if (httpContext == null)
14 | return relativeUrl;
15 |
16 | if (relativeUrl.StartsWith("/"))
17 | relativeUrl = relativeUrl.Insert(0, "~");
18 | if (!relativeUrl.StartsWith("~/"))
19 | relativeUrl = relativeUrl.Insert(0, "~/");
20 |
21 | var url = httpContext.Request.Url;
22 | var port = url.Port != 80 ? (":" + url.Port) : String.Empty;
23 |
24 | return String.Format("{0}://{1}{2}{3}",
25 | url.Scheme, url.Host, port, VirtualPathUtility.ToAbsolute(relativeUrl));
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/SPAuth/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustMaier/MVC5-SPA-Angular/dd0c79ea8fb7ee02c051396d3905aa6a3d28068f/SPAuth/favicon.ico
--------------------------------------------------------------------------------