From 6053d082aab8b25ce0a9aa113031aa1c284cd5de Mon Sep 17 00:00:00 2001 From: alexandre-spieser Date: Sun, 22 Oct 2017 01:24:27 +0000 Subject: [PATCH] Target both netstandard2.0 and netcoreapp2.0 --- src/AspNetCore.Identity.MongoDbCore.csproj | 6 +- src/AspNetCore.Identity.MongoDbCore.nuspec | 4 +- .../AspNetCore.Identity.MongoDbCore.dll | Bin 107520 -> 107520 bytes .../AspNetCore.Identity.MongoDbCore.deps.json | 1745 +++++++++++++++++ .../AspNetCore.Identity.MongoDbCore.dll | Bin 0 -> 107008 bytes .../AspNetCore.Identity.MongoDbCore.xml | 1375 +++++++++++++ src/lib/netstandard2.0/Resources.resx | 136 ++ ...entity.MongoDbCore.IntegrationTests.csproj | 2 +- 8 files changed, 3262 insertions(+), 6 deletions(-) create mode 100644 src/lib/netstandard2.0/AspNetCore.Identity.MongoDbCore.deps.json create mode 100644 src/lib/netstandard2.0/AspNetCore.Identity.MongoDbCore.dll create mode 100644 src/lib/netstandard2.0/AspNetCore.Identity.MongoDbCore.xml create mode 100644 src/lib/netstandard2.0/Resources.resx diff --git a/src/AspNetCore.Identity.MongoDbCore.csproj b/src/AspNetCore.Identity.MongoDbCore.csproj index 04aaa7c..d3231fc 100644 --- a/src/AspNetCore.Identity.MongoDbCore.csproj +++ b/src/AspNetCore.Identity.MongoDbCore.csproj @@ -1,15 +1,15 @@ - netcoreapp2.0 + netcoreapp2.0;netstandard2.0 - bin\Release\netcoreapp2.0\AspNetCore.Identity.MongoDbCore.xml + bin\Release\netstandard2.0\AspNetCore.Identity.MongoDbCore.xml - bin\Debug\netcoreapp2.0\AspNetCore.Identity.MongoDbCore.xml + bin\Debug\netstandard2.0\AspNetCore.Identity.MongoDbCore.xml diff --git a/src/AspNetCore.Identity.MongoDbCore.nuspec b/src/AspNetCore.Identity.MongoDbCore.nuspec index 387aacc..73f1da2 100644 --- a/src/AspNetCore.Identity.MongoDbCore.nuspec +++ b/src/AspNetCore.Identity.MongoDbCore.nuspec @@ -2,7 +2,7 @@ AspNetCore.Identity.MongoDbCore - 1.0.3 + 1.0.4 AspNetCore.Identity.MongoDbCore Alexandre Spieser Alexandre Spieser @@ -10,7 +10,7 @@ https://github.com/alexandre-spieser/AspNetCore.Identity.MongoDbCore false A MongoDb UserStore and RoleStore adapter for Microsoft.AspNetCore.Identity 2.0. - First release. + Target both netstandard2.0 and netcoreapp2 Copyright 2017 (c) Alexandre Spieser. All rights reserved. aspnetcore mongo mongodb identity membership diff --git a/src/lib/netcoreapp2.0/AspNetCore.Identity.MongoDbCore.dll b/src/lib/netcoreapp2.0/AspNetCore.Identity.MongoDbCore.dll index f9060e1f6fb82492c24dff447c1daf7b0341ef04..0940ed2ee93ff7153358a0949227d386eec53e02 100644 GIT binary patch delta 2228 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 BEQ$aC literal 0 HcmV?d00001 diff --git a/src/lib/netstandard2.0/AspNetCore.Identity.MongoDbCore.xml b/src/lib/netstandard2.0/AspNetCore.Identity.MongoDbCore.xml new file mode 100644 index 0000000..8eea8d6 --- /dev/null +++ b/src/lib/netstandard2.0/AspNetCore.Identity.MongoDbCore.xml @@ -0,0 +1,1375 @@ + + + + AspNetCore.Identity.MongoDbCore + + + + + The extensions for an object that holds claims. + + + + + Adds a claim to a claim holder, implementing . + + The object holding claims. + The claim you want to add. + Returns true if the claim was added. + + + + Replaces a claim on a claim holder, implementing . + + The object holding claims. + The claim you want to replace. + The new claim you want to set. + Returns true if the claim was replaced. + + + + Checks if an object implementing has a claim. + + The object holding claims. + The claim you want to replace. + Returns true if the claim is present, false otherwise. + + + + The interface for an object that holds claims. + + + + + The version of the role schema + + + + + The claims associated to the role + + + + + Gets or sets the LoginProvider this token is from. + + + + + + Gets or sets the token value. + + + + + Replaces a claim on a claim holder, implementing . + + The object holding claims. + The claim you want to replace. + The new claim you want to set. + Returns true if the claim was replaced. + + + + Represents the password hashing options + + + + + Gets options which use the IdentityV3 compat mode, and set the iteration count to 200000 PBKDF2-SHA256 iterations + (roughly 200ms of work) + + + + + Creates a new instance of a persistence store for roles. + + The type of the class representing a role + + + + Constructs a new instance of . + + The . + The . + + + + Creates a new instance of a persistence store for roles. + + The type of the class representing a role. + The type of the data context class used to access the store. + + + + Constructs a new instance of . + + The . + The . + + + + Creates a new instance of a persistence store for roles. + + The type of the class representing a role. + The type of the data context class used to access the store. + The type of the primary key for a role. + + + + Constructs a new instance of . + + The . + The . + + + + Creates a new instance of a persistence store for roles. + + The type of the class representing a role. + The type of the data context class used to access the store. + The type of the primary key for a role. + The type of the class representing a user role. + The type of the class representing a role claim. + + + + Constructs a new instance of . + + The . + The . + + + + Gets the database context for this store. + + + + + Gets or sets the for any error that occurred with the current operation. + + + + + Gets or sets a flag indicating if changes should be persisted after CreateAsync, UpdateAsync and DeleteAsync are called. + + + True if changes should be automatically persisted, otherwise false. + + + + + Creates a new role in a store as an asynchronous operation. + + The role to create in the store. + The used to propagate notifications that the operation should be canceled. + A that represents the of the asynchronous query. + + + + Updates a role in a store as an asynchronous operation. + + The role to update in the store. + The used to propagate notifications that the operation should be canceled. + A that represents the of the asynchronous query. + + + + Deletes a role from the store as an asynchronous operation. + + The role to delete from the store. + The used to propagate notifications that the operation should be canceled. + A that represents the of the asynchronous query. + + + + Gets the ID for a role from the store as an asynchronous operation. + + The role whose ID should be returned. + The used to propagate notifications that the operation should be canceled. + A that contains the ID of the role. + + + + Gets the name of a role from the store as an asynchronous operation. + + The role whose name should be returned. + The used to propagate notifications that the operation should be canceled. + A that contains the name of the role. + + + + Sets the name of a role in the store as an asynchronous operation. + + The role whose name should be set. + The name of the role. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Converts the provided to a strongly typed key object. + + The id to convert. + An instance of representing the provided . + + + + Converts the provided to its string representation. + + The id to convert. + An representation of the provided . + + + + Finds the role who has the specified ID as an asynchronous operation. + + The role ID to look for. + The used to propagate notifications that the operation should be canceled. + A that result of the look up. + + + + Finds the role who has the specified normalized name as an asynchronous operation. + + The normalized role name to look for. + The used to propagate notifications that the operation should be canceled. + A that result of the look up. + + + + Get a role's normalized name as an asynchronous operation. + + The role whose normalized name should be retrieved. + The used to propagate notifications that the operation should be canceled. + A that contains the name of the role. + + + + Set a role's normalized name as an asynchronous operation. + + The role whose normalized name should be set. + The normalized name to set + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Throws if this class has been disposed. + + + + + Dispose the stores + + + + + Get the claims associated with the specified as an asynchronous operation. + + The role whose claims should be retrieved. + The used to propagate notifications that the operation should be canceled. + A that contains the claims granted to a role. + + + + Adds the given to the specified . + + The role to add the claim to. + The claim to add to the role. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Removes the given from the specified . + + The role to remove the claim from. + The claim to remove from the role. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + A navigation property for the roles the store contains. + + + + + Creates a entity representing a role claim. + + The associated role. + The associated claim. + The role claim entity. + + + + Creates a new instance of a persistence store for the specified user type. + + The type representing a user. + + + + Constructs a new instance of . + + The . + The . + + + + Represents a new instance of a persistence store for the specified user and role types. + + The type representing a user. + The type of the data context class used to access the store. + + + + Constructs a new instance of . + + The . + The . + + + + Represents a new instance of a persistence store for the specified user and role types. + + The type representing a user. + The type of the data context class used to access the store. + The type of the primary key for a role. + + + + Constructs a new instance of . + + The . + The . + + + + Represents a new instance of a persistence store for the specified user and role types. + + The type representing a user. + The type of the data context class used to access the store. + The type of the primary key for a role. + The type representing a claim. + The type representing a user role. + The type representing a user external login. + The type representing a user token. + The type representing a role claim. + + + + Creates a new instance of the store. + + The context used to access the store. + The used to describe store errors. + + + + Gets the database context for this store. + + + + + Gets or sets a flag indicating if changes should be persisted after CreateAsync, UpdateAsync and DeleteAsync are called. + + + True if changes should be automatically persisted, otherwise false. + + + + Saves the current store. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Creates the specified in the user store. + + The user to create. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation, containing the of the creation operation. + + + + Updates the specified in the user store. + + The user to update. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation, containing the of the update operation. + + + + Deletes the specified from the user store. + + The user to delete. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation, containing the of the update operation. + + + + Finds and returns a user, if any, who has the specified . + + The user ID to search for. + The used to propagate notifications that the operation should be canceled. + + The that represents the asynchronous operation, containing the user matching the specified if it exists. + + + + + Finds and returns a user, if any, who has the specified normalized user name. + + The normalized user name to search for. + The used to propagate notifications that the operation should be canceled. + + The that represents the asynchronous operation, containing the user matching the specified if it exists. + + + + + A navigation property for the users the store contains. + + + + + Return a user with the matching userId if it exists. + + The user's id. + The used to propagate notifications that the operation should be canceled. + The user if it exists. + + + + Return a user login with the matching userId, provider, providerKey if it exists. + + The user's id. + The login provider name. + The key provided by the to identify a user. + The used to propagate notifications that the operation should be canceled. + The user login if it exists. + + + + Return a user login with provider, providerKey if it exists. + + The login provider name. + The key provided by the to identify a user. + The used to propagate notifications that the operation should be canceled. + The user login if it exists. + + + + Get the claims associated with the specified as an asynchronous operation. + + The user whose claims should be retrieved. + The used to propagate notifications that the operation should be canceled. + A that contains the claims granted to a user. + + + + Adds the given to the specified . + + The user to add the claim to. + The claim to add to the user. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Replaces the on the specified , with the . + + The user to replace the claim on. + The claim replace. + The new claim replacing the . + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Removes the given from the specified . + + The user to remove the claims from. + The claim to remove. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Adds the given to the specified . + + The user to add the login to. + The login to add to the user. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Removes the given from the specified . + + The user to remove the login from. + The login to remove from the user. + The key provided by the to identify a user. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Retrieves the associated logins for the specified . + + The user whose associated logins to retrieve. + The used to propagate notifications that the operation should be canceled. + + The for the asynchronous operation, containing a list of for the specified , if any. + + + + + Retrieves the user associated with the specified login provider and login provider key. + + The login provider who provided the . + The key provided by the to identify a user. + The used to propagate notifications that the operation should be canceled. + + The for the asynchronous operation, containing the user, if any which matched the specified login provider and key. + + + + + Gets the user, if any, associated with the specified, normalized email address. + + The normalized email address to return the user for. + The used to propagate notifications that the operation should be canceled. + + The task object containing the results of the asynchronous lookup operation, the user if any associated with the specified normalized email address. + + + + + Retrieves all users with the specified claim. + + The claim whose users should be retrieved. + The used to propagate notifications that the operation should be canceled. + + The contains a list of users, if any, that contain the specified claim. + + + + + Find a user token if it exists. + + The token owner. + The login provider for the token. + The name of the token. + The used to propagate notifications that the operation should be canceled. + The user token if it exists. + + + + Add a new user token. + + The token to be added. + + + + + Remove a new user token. + + The token to be removed. + + + + + Sets the given for the specified . + + The user whose name should be set. + The user name to set. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Sets the given normalized name for the specified . + + The user whose name should be set. + The normalized name to set. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Sets the password hash for a user. + + The user to set the password hash for. + The password hash to set. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Sets the flag indicating whether the specified 's email address has been confirmed or not. + + The user whose email confirmation status should be set. + A flag indicating if the email address has been confirmed, true if the address is confirmed otherwise false. + The used to propagate notifications that the operation should be canceled. + The task object representing the asynchronous operation. + + + + Sets the address for a . + + The user whose email should be set. + The email to set. + The used to propagate notifications that the operation should be canceled. + The task object representing the asynchronous operation. + + + + Sets the normalized email for the specified . + + The user whose email address to set. + The normalized email to set for the specified . + The used to propagate notifications that the operation should be canceled. + The task object representing the asynchronous operation. + + + + Locks out a user until the specified end date has passed. Setting a end date in the past immediately unlocks a user. + + The user whose lockout date should be set. + The after which the 's lockout should end. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Records that a failed access has occurred, incrementing the failed access count. + + The user whose cancellation count should be incremented. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation, containing the incremented failed access count. + + + + Resets a user's failed access count. + + The user whose failed access count should be reset. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + This is typically called after the account is successfully accessed. + + + + Set the flag indicating if the specified can be locked out.. + + The user whose ability to be locked out should be set. + A flag indicating if lock out can be enabled for the specified . + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Sets the telephone number for the specified . + + The user whose telephone number should be set. + The telephone number to set. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Sets a flag indicating if the specified 's phone number has been confirmed.. + + The user whose telephone number confirmation status should be set. + A flag indicating whether the user's telephone number has been confirmed. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Sets the provided security for the specified . + + The user whose security stamp should be set. + The security stamp to set. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Sets a flag indicating whether the specified has two factor authentication enabled or not, + as an asynchronous operation. + + The user whose two factor authentication enabled status should be set. + A flag indicating whether the specified has two factor authentication enabled. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Sets the token value for a particular user. + + The user. + The authentication provider for the token. + The name of the token. + The value of the token. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Deletes a token for a user. + + The user. + The authentication provider for the token. + The name of the token. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Returns the token value. + + The user. + The authentication provider for the token. + The name of the token. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Sets the authenticator key for the specified . + + The user whose authenticator key should be set. + The authenticator key to set. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Get the authenticator key for the specified . + + The user whose security stamp should be set. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation, containing the security stamp for the specified . + + + + Returns how many recovery code are still valid for a user. + + The user who owns the recovery code. + The used to propagate notifications that the operation should be canceled. + The number of valid recovery codes for the user.. + + + + Updates the recovery codes for the user while invalidating any previous recovery codes. + + The user to store new recovery codes for. + The new recovery codes for the user. + The used to propagate notifications that the operation should be canceled. + The new recovery codes for the user. + + + + Returns whether a recovery code is valid for a user. Note: recovery codes are only valid + once, and will be invalid after use. + + The user who owns the recovery code. + The recovery code to use. + The used to propagate notifications that the operation should be canceled. + True if the recovery code was found for the user. + + + + Represents a new instance of a persistence store for users, using the default implementation + of with a string as a primary key. + + + + + Constructs a new instance of . + + The . + The . + + + + Creates a new instance of a persistence store for the specified user type. + + The type representing a user. + + + + Constructs a new instance of . + + The . + The . + + + + Represents a new instance of a persistence store for the specified user and role types. + + The type representing a user. + The type representing a role. + The type of the data context class used to access the store. + + + + Constructs a new instance of . + + The . + The . + + + + Represents a new instance of a persistence store for the specified user and role types. + + The type representing a user. + The type representing a role. + The type of the data context class used to access the store. + The type of the primary key for a role. + + + + Constructs a new instance of . + + The . + The . + + + + Represents a new instance of a persistence store for the specified user and role types. + + The type representing a user. + The type representing a role. + The type of the data context class used to access the store. + The type of the primary key for a role. + The type representing a claim. + The type representing a user role. + The type representing a user external login. + The type representing a user token. + The type representing a role claim. + + + + Creates a new instance of the store. + + The context used to access the store. + The used to describe store errors. + + + + Gets the database context for this store. + + + + + Gets or sets a flag indicating if changes should be persisted after CreateAsync, UpdateAsync and DeleteAsync are called. + + + True if changes should be automatically persisted, otherwise false. + + + + Saves the current store. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Creates the specified in the user store. + + The user to create. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation, containing the of the creation operation. + + + + Updates the specified in the user store. + + The user to update. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation, containing the of the update operation. + + + + Deletes the specified from the user store. + + The user to delete. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation, containing the of the update operation. + + + + Finds and returns a user, if any, who has the specified . + + The user ID to search for. + The used to propagate notifications that the operation should be canceled. + + The that represents the asynchronous operation, containing the user matching the specified if it exists. + + + + + Finds and returns a user, if any, who has the specified normalized user name. + + The normalized user name to search for. + The used to propagate notifications that the operation should be canceled. + + The that represents the asynchronous operation, containing the user matching the specified if it exists. + + + + + A navigation property for the users the store contains. + + + + + Return a role with the normalized name if it exists. + + The normalized role name. + The used to propagate notifications that the operation should be canceled. + The role if it exists. + + + + Return a user role for the userId and roleId if it exists. + + The user's id. + The role's id. + The used to propagate notifications that the operation should be canceled. + The user role if it exists. + + + + Return a user with the matching userId if it exists. + + The user's id. + The used to propagate notifications that the operation should be canceled. + The user if it exists. + + + + Return a user login with the matching userId, provider, providerKey if it exists. + + The user's id. + The login provider name. + The key provided by the to identify a user. + The used to propagate notifications that the operation should be canceled. + The user login if it exists. + + + + Return a user login with provider, providerKey if it exists. + + The login provider name. + The key provided by the to identify a user. + The used to propagate notifications that the operation should be canceled. + The user login if it exists. + + + + Adds the given to the specified . + + The user to add the role to. + The role to add. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Removes the given from the specified . + + The user to remove the role from. + The role to remove. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Retrieves the roles the specified is a member of. + + The user whose roles should be retrieved. + The used to propagate notifications that the operation should be canceled. + A that contains the roles the user is a member of. + + + + Returns a flag indicating if the specified user is a member of the give . + + The user whose role membership should be checked. + The role to check membership of + The used to propagate notifications that the operation should be canceled. + A containing a flag indicating if the specified user is a member of the given group. If the + user is a member of the group the returned value with be true, otherwise it will be false. + + + + Get the claims associated with the specified as an asynchronous operation. + + The user whose claims should be retrieved. + The used to propagate notifications that the operation should be canceled. + A that contains the claims granted to a user. + + + + Adds the given to the specified . + + The user to add the claim to. + The claim to add to the user. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Replaces the on the specified , with the . + + The user to replace the claim on. + The claim replace. + The new claim replacing the . + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Removes the given from the specified . + + The user to remove the claims from. + The claim to remove. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Adds the given to the specified . + + The user to add the login to. + The login to add to the user. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Removes the given from the specified . + + The user to remove the login from. + The login to remove from the user. + The key provided by the to identify a user. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Retrieves the associated logins for the specified . + + The user whose associated logins to retrieve. + The used to propagate notifications that the operation should be canceled. + + The for the asynchronous operation, containing a list of for the specified , if any. + + + + + Retrieves the user associated with the specified login provider and login provider key. + + The login provider who provided the . + The key provided by the to identify a user. + The used to propagate notifications that the operation should be canceled. + + The for the asynchronous operation, containing the user, if any which matched the specified login provider and key. + + + + + Gets the user, if any, associated with the specified, normalized email address. + + The normalized email address to return the user for. + The used to propagate notifications that the operation should be canceled. + + The task object containing the results of the asynchronous lookup operation, the user if any associated with the specified normalized email address. + + + + + Retrieves all users with the specified claim. + + The claim whose users should be retrieved. + The used to propagate notifications that the operation should be canceled. + + The contains a list of users, if any, that contain the specified claim. + + + + + Retrieves all users in the specified role. + + The role whose users should be retrieved. + The used to propagate notifications that the operation should be canceled. + + The contains a list of users, if any, that are in the specified role. + + + + + Find a user token if it exists. + + The token owner. + The login provider for the token. + The name of the token. + The used to propagate notifications that the operation should be canceled. + The user token if it exists. + + + + Add a new user token. + + The token to be added. + + + + + Remove a new user token. + + The token to be removed. + + + + + Sets the given for the specified . + + The user whose name should be set. + The user name to set. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Sets the given normalized name for the specified . + + The user whose name should be set. + The normalized name to set. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Sets the password hash for a user. + + The user to set the password hash for. + The password hash to set. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Sets the flag indicating whether the specified 's email address has been confirmed or not. + + The user whose email confirmation status should be set. + A flag indicating if the email address has been confirmed, true if the address is confirmed otherwise false. + The used to propagate notifications that the operation should be canceled. + The task object representing the asynchronous operation. + + + + Sets the address for a . + + The user whose email should be set. + The email to set. + The used to propagate notifications that the operation should be canceled. + The task object representing the asynchronous operation. + + + + Sets the normalized email for the specified . + + The user whose email address to set. + The normalized email to set for the specified . + The used to propagate notifications that the operation should be canceled. + The task object representing the asynchronous operation. + + + + Locks out a user until the specified end date has passed. Setting a end date in the past immediately unlocks a user. + + The user whose lockout date should be set. + The after which the 's lockout should end. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Records that a failed access has occurred, incrementing the failed access count. + + The user whose cancellation count should be incremented. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation, containing the incremented failed access count. + + + + Resets a user's failed access count. + + The user whose failed access count should be reset. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + This is typically called after the account is successfully accessed. + + + + Set the flag indicating if the specified can be locked out.. + + The user whose ability to be locked out should be set. + A flag indicating if lock out can be enabled for the specified . + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Sets the telephone number for the specified . + + The user whose telephone number should be set. + The telephone number to set. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Sets a flag indicating if the specified 's phone number has been confirmed.. + + The user whose telephone number confirmation status should be set. + A flag indicating whether the user's telephone number has been confirmed. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Sets the provided security for the specified . + + The user whose security stamp should be set. + The security stamp to set. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Sets a flag indicating whether the specified has two factor authentication enabled or not, + as an asynchronous operation. + + The user whose two factor authentication enabled status should be set. + A flag indicating whether the specified has two factor authentication enabled. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Sets the token value for a particular user. + + The user. + The authentication provider for the token. + The name of the token. + The value of the token. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Deletes a token for a user. + + The user. + The authentication provider for the token. + The name of the token. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Returns the token value. + + The user. + The authentication provider for the token. + The name of the token. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Sets the authenticator key for the specified . + + The user whose authenticator key should be set. + The authenticator key to set. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation. + + + + Get the authenticator key for the specified . + + The user whose security stamp should be set. + The used to propagate notifications that the operation should be canceled. + The that represents the asynchronous operation, containing the security stamp for the specified . + + + + Returns how many recovery code are still valid for a user. + + The user who owns the recovery code. + The used to propagate notifications that the operation should be canceled. + The number of valid recovery codes for the user.. + + + + Updates the recovery codes for the user while invalidating any previous recovery codes. + + The user to store new recovery codes for. + The new recovery codes for the user. + The used to propagate notifications that the operation should be canceled. + The new recovery codes for the user. + + + + Returns whether a recovery code is valid for a user. Note: recovery codes are only valid + once, and will be invalid after use. + + The user who owns the recovery code. + The recovery code to use. + The used to propagate notifications that the operation should be canceled. + True if the recovery code was found for the user. + + + + Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées. + + + + + Retourne l'instance ResourceManager mise en cache utilisée par cette classe. + + + + + Remplace la propriété CurrentUICulture du thread actuel pour toutes + les recherches de ressources à l'aide de cette classe de ressource fortement typée. + + + + + Recherche une chaîne localisée semblable à AddEntityFrameworkStores can only be called with a role that derives from IdentityRole<TKey, TUserRole, TRoleClaim>.. + + + + + Recherche une chaîne localisée semblable à AddEntityFrameworkStores can only be called with a user that derives from IdentityUser<TKey, TUserClaim, TUserRole, TUserLogin, TUserToken>.. + + + + + Recherche une chaîne localisée semblable à Role {0} does not exist.. + + + + + Recherche une chaîne localisée semblable à Value cannot be null or empty.. + + + + diff --git a/src/lib/netstandard2.0/Resources.resx b/src/lib/netstandard2.0/Resources.resx new file mode 100644 index 0000000..eb19639 --- /dev/null +++ b/src/lib/netstandard2.0/Resources.resx @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + AddEntityFrameworkStores can only be called with a role that derives from IdentityRole<TKey, TUserRole, TRoleClaim>. + error when the role does not derive from IdentityRole + + + AddEntityFrameworkStores can only be called with a user that derives from IdentityUser<TKey, TUserClaim, TUserRole, TUserLogin, TUserToken>. + error when the user does not derive from IdentityUser + + + Role {0} does not exist. + error when a role does not exist + + + Value cannot be null or empty. + error when something cannot be null or empty + + \ No newline at end of file diff --git a/test/AspNetCore.Identity.MongoDbCore.IntegrationTests/AspNetCore.Identity.MongoDbCore.IntegrationTests.csproj b/test/AspNetCore.Identity.MongoDbCore.IntegrationTests/AspNetCore.Identity.MongoDbCore.IntegrationTests.csproj index 349ac06..2744b09 100644 --- a/test/AspNetCore.Identity.MongoDbCore.IntegrationTests/AspNetCore.Identity.MongoDbCore.IntegrationTests.csproj +++ b/test/AspNetCore.Identity.MongoDbCore.IntegrationTests/AspNetCore.Identity.MongoDbCore.IntegrationTests.csproj @@ -7,7 +7,7 @@ - +