Skip to content

Instantly share code, notes, and snippets.

Judah Gabriel Himango JudahGabriel

Block or report user

Report or block JudahGabriel

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View AccountController.cs
public class AccountController : Controller
{
private UserManager<AppUser> userManager;
private SignInManager<AppUser> signInManager;
// RavenDB.Identity provides a UserManager and SignInManager for dependency injection.
public AccountController(UserManager<AppUser> userManager, SignInManager<AppUser> signInManager)
{
this.userManager = userManager;
this.signInManager = signInManager;
View HomeController.cs
public class HomeController : Controller
{
[Authorize] // Authorize: the user must be signed in
public IActionResult Index()
{
}
[Authorize(Roles = "Admin"] // Authorize: the signed in user must be an admin
public IActionResult Index()
{
View Startup.cs
public void ConfigureServices(IServiceCollection services)
{
// Add RavenDB and identity.
services
.AddRavenDb(Configuration.GetConnectionString("RavenDbConnection")) // Create a RavenDB DocumentStore singleton.
.AddRavenDbAsyncSession() // Create a RavenDB IAsyncDocumentSession for each request.
.AddRavenDbIdentity<AppUser>(); // Use Raven for users and roles. AppUser is your class, a simple DTO to hold user data. See https://github.com/JudahGabriel/RavenDB.Identity/blob/master/Sample/Models/AppUser.cs
...
}
View UserController.js
UsersController.prototype.fetchUsers = function () {
return __awaiter(this, void 0, void 0, function () {
var results;
return __generator(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, this.usersApi.getUsers(0, 100)];
case 1:
results = _a.sent();
this.users = results;
return [2 /*return*/];
View tsconfig.json
{
"compilerOptions": {
"noImplicitAny": false,
"noEmitOnError": true,
"removeComments": false,
"sourceMap": false,
"target": "es5",
"noEmitHelpers": true,
"strictNullChecks": true
},
View UsersController.js
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t;
View UsersController.ts
class UsersController {
users: User[] = [];
constructor() {
this.fetchUsers();
}
async fetchUsers() {
var result = await this.$http.get("/users/all"); // Put this in a service, obviously. userService.get() or whatever.
this.users = result; // Yay! The UI will automatically update to show these users.
View App.ts
App.run([
"$q",
function ($q: ng.IQService) {
// Use Angular's Q object as Promise. This is needed to make async/await work properly with the UI.
// See http://stackoverflow.com/a/41825004/536
window["Promise"] = $q;
}]);
View tsconfig.json
{
"compilerOptions": {
"noImplicitAny": false,
"noEmitOnError": true,
"removeComments": false,
"sourceMap": false,
"target": "es5",
"strictNullChecks": true,
},
"compileOnSave": true,
View asyncAwait.js
// 1. Old, sucky way of doing async work: callback hell!
function myCallback(result) {
this.items = result;
}
someAjaxRequest(myCallback);
// 2. Slightly better way using Promises!
someAjaxRequest().then(results => this.items = results);
You can’t perform that action at this time.