remove the user code
This commit is contained in:
@@ -1,39 +0,0 @@
|
||||
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
|
||||
import { Document } from 'mongoose';
|
||||
|
||||
export type UserDocument = User & Document;
|
||||
|
||||
@Schema()
|
||||
export class User {
|
||||
@Prop({
|
||||
required: true,
|
||||
index: true,
|
||||
type: Number,
|
||||
})
|
||||
vatsimId: number;
|
||||
|
||||
@Prop({
|
||||
required: true,
|
||||
type: String,
|
||||
})
|
||||
apiCode: string;
|
||||
|
||||
@Prop({
|
||||
type: Boolean,
|
||||
default: false,
|
||||
})
|
||||
systemAdminAccess: boolean;
|
||||
|
||||
@Prop({
|
||||
type: [String],
|
||||
default: [],
|
||||
})
|
||||
airportAdminAccess: string[];
|
||||
|
||||
@Prop({
|
||||
type: String,
|
||||
})
|
||||
fullName: string;
|
||||
}
|
||||
|
||||
export const UserSchema = SchemaFactory.createForClass(User);
|
||||
@@ -1,11 +0,0 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { MongooseModule } from '@nestjs/mongoose';
|
||||
import { UserSchema } from './models/user.model';
|
||||
import { UserService } from './user.service';
|
||||
|
||||
@Module({
|
||||
imports: [MongooseModule.forFeature([{ name: 'user', schema: UserSchema }])],
|
||||
providers: [UserService],
|
||||
exports: [MongooseModule, UserService],
|
||||
})
|
||||
export class UserModule {}
|
||||
@@ -1,18 +0,0 @@
|
||||
import { Test, TestingModule } from '@nestjs/testing';
|
||||
import { UserService } from './user.service';
|
||||
|
||||
describe('UserService', () => {
|
||||
let service: UserService;
|
||||
|
||||
beforeEach(async () => {
|
||||
const module: TestingModule = await Test.createTestingModule({
|
||||
providers: [UserService],
|
||||
}).compile();
|
||||
|
||||
service = module.get<UserService>(UserService);
|
||||
});
|
||||
|
||||
it('should be defined', () => {
|
||||
expect(service).toBeDefined();
|
||||
});
|
||||
});
|
||||
@@ -1,50 +0,0 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { InjectModel } from '@nestjs/mongoose';
|
||||
import { randomBytes } from 'crypto';
|
||||
import { Model } from 'mongoose';
|
||||
import { UserDocument, User } from './models/user.model';
|
||||
|
||||
const ApiKeyLength = 64;
|
||||
|
||||
@Injectable()
|
||||
export class UserService {
|
||||
constructor(
|
||||
@InjectModel('user')
|
||||
private readonly userModel: Model<UserDocument>,
|
||||
) {}
|
||||
|
||||
private static createApiKey(): string {
|
||||
return randomBytes(ApiKeyLength).toString('hex');
|
||||
}
|
||||
|
||||
async register(vatsimId: number, fullName: string): Promise<User> {
|
||||
return this.user(vatsimId).then((user) => {
|
||||
if (user) return user;
|
||||
|
||||
return this.userModel
|
||||
.create({
|
||||
vatsimId,
|
||||
apiCode: UserService.createApiKey(),
|
||||
systemAdminAccess: false,
|
||||
airportAdminAccess: [],
|
||||
fullName,
|
||||
})
|
||||
.then(() => this.user(vatsimId));
|
||||
});
|
||||
}
|
||||
|
||||
async user(vatsimId: number): Promise<User | undefined> {
|
||||
return this.userModel.findOne({ vatsimId });
|
||||
}
|
||||
|
||||
async refreshApiKey(vatsimId: number): Promise<User | undefined> {
|
||||
return this.userModel
|
||||
.findOneAndUpdate({ vatsimId }, { apiCode: UserService.createApiKey() })
|
||||
.then(() =>
|
||||
this.user(vatsimId).then((user) => {
|
||||
if (!user) return undefined;
|
||||
return user;
|
||||
}),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user