Skip to content

Commit cde2ed2

Browse files
committed
Adding ability to get the id of the first user in db.
1 parent 5e8fd32 commit cde2ed2

File tree

7 files changed

+32
-5
lines changed

7 files changed

+32
-5
lines changed

eFormAPI/eFormAPI.Web/Services/AuthService.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ public async Task<OperationDataResult<EformAuthorizeResult>> AuthenticateUser(Lo
152152
await userManager.UpdateAsync(user);
153153
}
154154

155+
var firstUserIdInDb = await userService.GetFirstUserIdInDb();
156+
155157
return new OperationDataResult<EformAuthorizeResult>(true, new EformAuthorizeResult
156158
{
157159
Id = user.Id,
@@ -160,7 +162,8 @@ public async Task<OperationDataResult<EformAuthorizeResult>> AuthenticateUser(Lo
160162
Role = roleList.FirstOrDefault(),
161163
ExpiresIn = token.expireIn,
162164
FirstName = user.FirstName,
163-
LastName = user.LastName
165+
LastName = user.LastName,
166+
IsFirstUser = user.Id == firstUserIdInDb
164167
});
165168
}
166169

eFormAPI/eFormAPI.Web/Services/UserService.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,14 @@ public async Task<Language> GetLanguageByUserIdAsync(int userId)
213213
return language;
214214
}
215215

216+
public async Task<int> GetFirstUserIdInDb()
217+
{
218+
return await dbContext.Users
219+
.AsNoTracking()
220+
.Select(x => x.Id)
221+
.FirstOrDefaultAsync();
222+
}
223+
216224
public async Task<Language> GetCurrentUserLanguage()
217225
{
218226
if (UserId < 1)

eform-client/src/app/common/models/auth/auth-response.model.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export class AuthResponseModel {
77
lastName: string;
88
userName: string;
99
id: number;
10+
isFirstUser: boolean;
1011

1112
constructor(user: any) {
1213
this.accessToken = user.accessToken;
@@ -17,5 +18,6 @@ export class AuthResponseModel {
1718
this.lastName = user.lastName;
1819
this.userName = user.userName;
1920
this.id = user.id;
21+
this.isFirstUser = user.isFirstUser;
2022
}
2123
}

eform-client/src/app/common/store/service/auth-state.service.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,13 @@ export class AuthStateService {
7373
expiresIn: response.expiresIn,
7474
role: response.role
7575
},
76-
currentUser: {firstName: response.firstName, lastName: response.lastName, userName: response.userName, id: response.id},
76+
currentUser: {
77+
firstName: response.firstName,
78+
lastName: response.lastName,
79+
userName: response.userName,
80+
id: response.id,
81+
isFirstUser: response.isFirstUser
82+
},
7783
count: 2
7884
})
7985
);
@@ -149,6 +155,7 @@ export class AuthStateService {
149155
userName: auth.model.userName,
150156
firstName: auth.model.firstName,
151157
lastName: auth.model.lastName,
158+
isFirstUser: auth.model.isFirstUser,
152159
},
153160
count: 2,
154161
})))),
@@ -181,7 +188,7 @@ export class AuthStateService {
181188
try {
182189
userLocale = navigator.language || navigator.languages[0];
183190
} catch (e) {
184-
console.error('Error in logout: ', e);
191+
// console.error('Error in logout: ', e);
185192
}
186193
this.updateCurrentUserLocaleAndDarkTheme(userLocale, false); // update locale to default locale and theme
187194
this.router.navigate(['/auth']).then();
@@ -213,7 +220,7 @@ export class AuthStateService {
213220
const languageId = applicationLanguages.find(x => x.locale.split('-')[0] === locale).id;
214221
this.authStore.dispatch(updateUserLocale({locale: locale, languageId: languageId}));
215222
} catch (e) {
216-
console.error('Error in updateUserLocale: ', e);
223+
// console.error('Error in updateUserLocale: ', e);
217224
const languageId = applicationLanguages.find(x => x.locale === 'en-US').id;
218225
this.authStore.dispatch(updateUserLocale({locale: locale, languageId: languageId}));
219226
}
@@ -227,7 +234,7 @@ export class AuthStateService {
227234
const languageId = applicationLanguages.find(x => x.locale.split('-')[0] === locale).id;
228235
this.authStore.dispatch(updateCurrentUserLocaleAndDarkTheme({locale: locale, languageId: languageId, darkTheme: darkTheme}));
229236
} catch (e) {
230-
console.error('Error in updateUserLocale: ', e);
237+
// console.error('Error in updateUserLocale: ', e);
231238
const languageId = applicationLanguages.find(x => x.locale === 'en-US').id;
232239
this.authStore.dispatch(updateCurrentUserLocaleAndDarkTheme({locale: locale, languageId: languageId, darkTheme: darkTheme}));
233240
}

eform-client/src/app/state/auth/auth.effects.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export class AuthEffects {
3333
userName: auth.userName,
3434
firstName: auth.firstName,
3535
lastName: auth.lastName,
36+
isFirstUser: auth.isFirstUser,
3637
},
3738
count: 2,
3839
})),
@@ -57,6 +58,7 @@ export class AuthEffects {
5758
userName: auth.model.userName,
5859
firstName: auth.model.firstName,
5960
lastName: auth.model.lastName,
61+
isFirstUser: auth.model.isFirstUser,
6062
},
6163
count: 2,
6264
}))),
@@ -109,6 +111,7 @@ export class AuthEffects {
109111
userName: auth.model.userName,
110112
firstName: auth.model.firstName,
111113
lastName: auth.model.lastName,
114+
isFirstUser: auth.model.isFirstUser,
112115
},
113116
count: 2,
114117
}))),

eform-client/src/app/state/auth/auth.recuder.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export interface AuthCurrentUser {
2323
darkTheme?: boolean;
2424
loginRedirectUrl?: string;
2525
claims?: UserClaimsModel;
26+
isFirstUser: boolean
2627
}
2728

2829
export interface AuthToken {
@@ -60,6 +61,7 @@ export const authInitialState: AuthState = {
6061
languageId: 0,
6162
darkTheme: false,
6263
loginRedirectUrl: '',
64+
isFirstUser: false,
6365
claims: {
6466
unitsRead: false,
6567
unitsUpdate: false,

eform-client/src/app/state/auth/auth.selector.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ export const selectCurrentUserFullName
4242
= createSelector(selectAuthUser, (state) => `${state.firstName} ${state.lastName}`);
4343
export const selectCurrentUserIsAdmin
4444
= createSelector(selectAuthToken, (state) => state.role.toLowerCase() === 'admin');
45+
export const selectCurrentUserIsFirstUser
46+
= createSelector(selectAuthUser, (state) => state.isFirstUser);
4547
export const selectCurrentUserClaims
4648
= createSelector(selectAuthUser, (state) => state.claims);
4749
export const selectCurrentUserClaimsUsersUpdate

0 commit comments

Comments
 (0)