Giter VIP home page Giter VIP logo

passwordmanagerassessment's Introduction

Password Manager - Assessment

My implementation to the tasks for the interview. Tasks can be found in issue #1
UI Design uses Bootstrap 5.2.0

Project Requirements

In order to run the project, .NET 7 (SDK 7.0.100) is required to be installed on your machine in order to run the project.

Project Architecture

The following image shows the current state of the system's architecture. Simple Architecture Diagram

Database Connection String Setup

The database used for development is SQL Server LocalDB Instance that comes with VS Community. So the connection string should be changed to your instance's server address. i.e. Change the (localdb)\MSSQLLocalDB in the AppDbContext File to your instance.

How to run

The following steps shows how to run the project:

  • Clone the repo on your machine.
  • Navigate to the repo's folder on your machine.
  • Open PasswordManagerAssessment.sln using Visual Studio Community 2022.
  • Make sure that the project PasswordManager.UI, PasswordManager.API and IdentityServer are set as Startup Projects.
  • Build the Solution using Ctrl + Shift + B, or Right-click on the solution file, then select Build Solution
  • Run the project using Ctrl + F5, or click on run located under the menu bar.

IdentityServer Database Migrations

There are 3 DbContexts in IdentityServer project. In case you want to create a new migration for any of them, use the following commands:

  • ConfigurationDbContext
Add-Migration <Migration Name> -Context ConfigurationDbContext -OutputDir "Migrations\ConfigurationDb"
Update-Database -Context ConfigurationDbContext
  • PersistedGrantDbContext
Add-Migration <Migration Name> -Context PersistedGrantDbContext -OutputDir "Migrations\PersistedGrantDb"
Update-Database -Context PersistedGrantDbContext
  • AppDbContext
Add-Migration <Migration Name> -Context AppDbContext -OutputDir "Migrations\AppDb"
Update-Database -Context AppDbContext

Replace <Migration Name> with any name you prefer.

Accounts for logging in

There are 2 accounts stored in-memory that are available for use.

Subject ID Username Password
1 alice Pass123$
2 bob Pass123$

passwordmanagerassessment's People

Contributors

youssefwaelmohamedlotfy avatar

Watchers

 avatar

passwordmanagerassessment's Issues

Complete Task

The purpose of this project is to create a system for a company, to create and maintain their passwords for keeping login accounts into a simple website and CRUD the login list.

Tasks

  • The Project should be .net6 or .NET standard 2.0 (Domains)
  • It should support creating, updating, and deleting Logins
  • The Project should use Encryption for saving the passwords
  • For the UI you should choose Blazor or Vue.js
  • Your API should have Authorization and Authentication
  • Use AutoMapper and FluentValidation
  • Use Serilog for Logger
  • The database should be SQL Code First

Backend Implementation

Referencing #1, this issue should complete the following tasks.

Tasks

  • It should support creating, updating, and deleting Logins
  • The Project should use Encryption for saving the passwords
  • Your API should have Authorization and Authentication
  • Use AutoMapper and FluentValidation
  • The database should be SQL Code First

A new Class Library is to be created for API Contracts and Swagger Examples which holds Data Transfer Objects (DTOs), that will be referenced in the API & SDK (in the future)

Change In-Memory store to EF Core Stores for IdentityServer

The Configuration & Operational stores should be changed to use EF Core instead of In-Memory Stores.

Tasks

  • Updates Configuration & Operational stores to use EF Core
  • Enable Consent for MVC Client
  • Integrate ASP.NET Core Identity with IdentityServer

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.